//
//
Search
📌

오늘 배운 내용 요약

C언어

다차원 배열

다차원 배열이란 2차원 이상의 배열을 의미하며, 배열 요소로 또 다른 배열을 가지는 배열을 의미한다.
컴퓨터의 메모리는 입체적 공간이 아닌 선형 공간이므로 실제로는 다음과 같은 모습으로 저장된다.  다차원 배열과 1차원 배열 모두 메모리 공간에 저장되는 모습은 1차원!
int arr01[6] = {10, 20, 30, 40, 50, 60}; int arr02[2][3] = {10, 20, 30, 40, 50, 60};
C
복사

구조체

구조체(structure type)란 사용자가 C언어의 기본 타입을 활용하여 새롭게 정의할 수 있는 사용자 정의 타입. 구조체를 통해 기본 타입만으로는 나타낼 수 없는 복잡한 데이터를 표현할 수 있다.
// 구조체 형식 struct 구조체이름 { 자료형 변수명; 자료형 변수명; };
C
복사

다차원 배열, 구조체 예제

Ch34 1번 문제
Ch34 2번 문제

Java

Java의 배열

Java에서 배열을 heap에 저장하는 이유 C언어에서는 동적할당을 하기 위해 메모리 할당과 해제를 직접 해줘야하는 번거로움이 있지만, Java에서는 가비지 콜렉터가 메모리 관리를 자동으로 해주기 때문에 동적할당의 번거로움 없이 메모리를 효율적으로 사용할 수 있기 때문.

Stack 변수  Heap 변수

Stack
Heap
장점
1. new나 malloc 없이 메모리 할당이 자동으로 된다.
1. 수명을 개발자가 컨트롤할 수 있다. 2. 실행 중 사이즈를 정할 수 있다.
단점
1. 수명이 제한적이다. 2. 사이즈가 실행 중에 바뀔 수 없다.
free를 꼭 해야 한다.

List  Map

List(ArrayList) 배열을 사용하기 위해서는 미리 크기를 정해야 하지만, 프로그래밍 중에 동적으로 생성해야 하는 경우가 많기 때문에 이러한 한계를 해결하기 위해 List 자료형을 사용한다. List는 메모리가 허용하는 한 계속해서 추가 할 수 있도록 만든 자료형 클래스이다. List의 장점
데이터를 넣을 때 편하다(오토 라벨링).
List의 단점
모든 인덱스에 어떤 값이 저장 되었는지 기억하기 힘들다.
지우고 수정하는 작업이 힘들다(key가 숫자이기 때문에 데이터에 접근하기 불편).
// List 예제 import java.util.List; import java.util.ArrayList; class Main { public static void main(String[] args) { List<Integer> ages = new ArrayList<>(); ages.add(10); // 0, 철수 나이 ages.add(20); // 1, 영희 나이 ages.add(30); // 2, 영수 나이 ages.remove(1); // 인덱스가 1인 것을 삭제 System.out.println(ages.get(1)); // 30 } }
Java
복사
Map(HashMap) Map은 (key, value) 쌍으로 이루어진 데이터 집합으로, List나 배열처럼 순차적으로 해당 요소 값을 저장하거나 구하지 않고 key를 통해 value를 얻는 자료형이다. Map의 장점
데이터 접근이 편하다.
key가 인간이 이해하기 쉬운 형태.
Map의 단점
데이터를 넣을 때 불편하다(수동 라벨링).
// Map 예제 import java.util.Map; import java.util.HashMap; class Main { public static void main(String[] args) { Map<String, Integer> ages2 = new HashMap<>(); ages2.put("철수", 10); // 철수, 철수 나이 ages2.put("영희", 20); // 영희, 영희 나이 ages2.put("영수", 30); // 영수, 영수 나이 ages.remove("영수"); // key가 "영수"인 것을 삭제 System.out.println(ages.get("영희")); // 20 } }
Java
복사

SSG

MVC 패턴

 정의
디자인 패턴 중 하나
어플리케이션, 프로젝트를 구성할 때 그 구성요소를 세가지의 역할로 구분함
 디자인패턴이란? : 상황에 따라 간편하게 쓸 수 있는 것을 정리해 특정한 규약을 통해 쉽게 쓸 수 있는 형태로 만든 것
 구성
Model , View, Controller
모델
모델은 앱이 포함해야할 데이터가 무엇인지를 정의합니다.
데이터의 상태가 변경되면 모델을 일반적으로 뷰에게 알리며 가끔 컨트롤러에게 알리기도 합니다
뷰는 앱의 데이터를 보여주는 방식을 정의합니다.
표시할 데이터를 모델로부터 받습니다.
컨트롤러
컨트롤러는 앱의 사용자로부터의 입력에 대한 응답으로 모델 및/또는 뷰를 업데이트하는 로직을 포함합니다.
입력이 컨트롤러에게 전송되고, 모델을 적당하게 처리한다음, 업데이트된 데이터를 뷰로 전송합니다.
 흐름
: 사용자가 controller 조작 → controller는 model을 통해서 데이터를 가져옴 → View가 해당 데이터를 바탕으로 시각적인 표현을 구성해 사용자에게 전달
 사용이유
서로 분리되어 각자의 역할에 집중할 수 있게끔 함
가독성 증가
유지보수, 어플리케이션의 확장성, 유연성 증가