본문 바로가기

전체 글330

3장-5. 재귀 함수 재귀란 무엇인가? for문이나 while문 이외에 반복을 구현하는 또 다른 방법 자신의 정의 내에서 자기 자신을 호출하는 것 재귀는 반복적인 작업을 수행하는데 명쾌하고 강력한 대안을 제시한다! 계승 함수 양의 정수 n의 계승(n!)는 1부터 n까지의 정수곱이다. n = 0이라면 n!는 1로 정의된다. 더 일반적으로는 n >= 0이다. 5! = 5 x 4 x 3 x 2 x 1 = 120 이런 n!를 나타내기 위해 factorial(n) 이라는 표현을 사용한다. 계승 함수는 재귀적인 공식을 제시하는 방법으로도 정의된다. factorial(5) = 5 * (4 * 3 * 2 * 1) = 5 * factorial(4) 그래서 일반적으로 양에 정수에 대해 factorial(n)은 n * factorial(n-1).. 2022. 9. 13.
1주차-1. 2979번 트럭 주차, 카운팅 배열에 대한 개념 2979번 트럭 주차 문제 문제의 요지는 주차된 차량 별 3가지 요금을 입력 받아서,주차된 차량이 몇 대냐에 따라 1대 당 요금을 다르게 책정하고최종적으로 발생하는 비용을 물어보는 문제였다. 먼저 무작정 풀어보기 값을 입력 받고, for문의 범위를 정하기 위해 최대 / 최소를 구하는 로직 int A, B, C; cin >> A >> B >> C; int arr[3][2] = {}; int min = 101, max = -1; for (int i = 0; i > arr[i][j]; if (arr[i][j] >= max) max = arr[i][j]; if (arr[i][j] > A >> B >> C; int sum = 0;.. 2022. 9. 12.
3-3. 가상 주소 공간과 DLL 가상 주소 공간이란? 두 프로세스 A, B가 켜져 있을 때, A가 물리메모리 0x10000000번대 주소를 사용하고, B가 물리메모리 0x20000000번대 주소를 사용하는 경우를 가정해보자. 어쩌다 A가 실수로 0x21000000번대 주소로 접근해서 잘못 참조할 수 있다. 이걸 막으려면 두 프로세스는 가상의 주소공간을 갖고, 실제 물리 메모리는 운영체제가 관리 해주는게 좋을 것 같다. 물리 메모리를 직접 사용하면 안되는 이유 프로세스 간 안정성이 떨어짐 사용할 수 있는 주소에 제약이 있음 (다른 프로세스의 주소를 피해야 하므로) Page Table 이에 대한 방안으로 Page Table이라는 방안을 통해 해결한다. 페이지테이블은 위와 같은 문제들을 방지하기 위해서 물리 주소와 가상 주소를 매핑해주는 역.. 2022. 9. 12.
3장-4. 일반적인 링크드 리스트 구현 (단일, 이중, 환형) 단일 링크드 리스트 구현 일반적인 단일 링크드 리스트는 SLinkedList라고 불린다. C++의 템플릿 매커니즘을 통해 string이 아닌 다른 타입들도 받을 수 있도록 한다. 따라서 링크드 리스트를 구성하는 노드(SNode)도 템플릿으로 작성된다. #pragma once // SLinkedList를 구성하는 노드 template class SNode { private: E elem;// 노드가 가진 값 SNode* next; // 다음 요소를 가리키는 포인터 friend class SLinkedList; }; // 일반화된 단일 링크드 리스트 template class SLinkedList { public: SLinkedList(); ~SLinkedList(); bool empty() const;//.. 2022. 9. 12.