4

[Java]참조 타입(이것이 자바다 Ch.5)(작성 중)

5.1 데이터 타입 분류 데이터 타입 원시 타입(Primitive type) 정수 타입 byte(1byte) char(2byte) short(2byte) int(4byte) long(8byte) 실수 타입 float double 논리 타입 boolean 참조 타입(Reference type) 배열 타입(array) 열거 타입(enum) 클래스(class) 인터페이스(Interface) 💡 참조 타입: 객체의 번지를 참조하는 타입으로 배열, 열거, 클래스, 인터페이스 타입을 말함. 변수: 스택에 생성 int, double → 직접 값을 저장 객체: 힙에 생성 클래스 변수 → 힙 영역의 객체 주소 값을 갖는다. 주소를 통해 객체를 참조한다는 뜻에서 클래스 변수를 참조 타입(Reference type) 변수라..

Java 2022.05.20

정글사관학교 44일차 TIL: Explicit malloc 정리 및 구현 review

어제 떡하니 코드만 달랑 올려놓고 말아서 많은 분들이 실망했을 것으로 아는 바, 오늘은 디테일하게 Explicit 방식에 대해 정리하고 코드까지 리뷰하는 것으로 TIL 정리를 해보겠다. 정리를 하기 전에, 동적 메모리 할당 이전에 나오는 개념인 시스템 콜에 대해 간단히 정리하고 넘어간다. 시스템 콜 시스템 콜: OS(특히 커널)이 제공하는 서비스에 접근하기 위한 상호작용을 말한다. 커널(kernel): 메모리에 상주하고 있는 운영체제 핵심 중 일부를 뜻한다. 응용프로그램이 컴퓨터 시스템에서 수행되기 위해서는 메모리에 프로그램이 올라가 있어야 한다. 운영체제 역시 하나의 프로그램으로, 메모리에 올라가야 하는데 OS는 무겁기 때문에 필요한 핵심만 메모리에 올라간다. 이때, 메모리에 상주해 있는 OS의 일부를..

정글사관학교 40일차 TIL: 동적 메모리 할당(malloc), 힙 단편화(fragmentation)

malloc: Dynamic memory allocation(동적 메모리 할당) Dynamic Memory Allocator 우리는 왜 동적 메모리 할당을 이용할까? C언어에서는 배열을 만들 때, 반드시 그 사이즈를 미리 선언해줘야 한다. 예컨대 2학년 3반 학생 수가 32명인데 이를 배열로 담는다고 하자. 그러면 정확히 size = 32라고 선언해줘야 한다. 그런데 2학년 모든 반에 대해 각각 배열을 만들어준다고 하면, 우리는 각 반 학생 수에 맞게 일일이 배열을 선언해줘야 한다. 이는 굉장히 비효율적이다. 일일이 타자를 치고 있는 상황을 생각해보라. 이런 낭비를 막기 위해, 학년 별 학생 수를 담고 있는 배열에서 숫자를 받아와 그 학생 수만큼 배열을 자체적으로 그때그때 생성할 수 있다면 프로그래머가 ..

정글사관학교 24일차 TIL: 다익스트라 알고리즘, 최소비용 구하기(#1916)

0. 목차 1. 다익스트라 알고리즘 2. 최소비용 구하기(#1916) 1. 다익스트라 알고리즘 다익스트라 알고리즘은 DP를 이용한 대표적인 최단경로 알고리즘이다. 특정한 하나의 노드(출발점을 고정)에서 다른 모든 노드로 가는 최단 경로를 알려주는 알고리즘이다. 다익스트라 알고리즘의 핵심 개념만 요약정리하면 우선순위 큐(Heap)을 사용한다는 점 (최소 비용을 뽑아내기 위해) 이차원 배열에 값을 미리 저장(DP)해둔다는 점(그때그때 최단 경로/최소 비용 등 최솟값을 배열에 저장해두고 갱신하는 식으로) 다익스트라에서 음의 간선은 포함할 수 없다는 점 (음의 간선까지 고려 가능한 알고리즘은 벨만포드가 있다는데 이번에는 쓸일이 없어서 패스) 다익스트라와 DP 다익스트라 알고리즘은 하나의 최단거리를 구할 때 그 ..