본문 바로가기

분류 전체보기43

[1-4] inline 함수 1. inline 함수란?- in(내부) + line(프로그램 코드 라인)- 즉, 프로그램 코드라인 안으로 들어가 버린 함수 2. inline 함수는 왜 쓰는걸까- 매크로 함수는 일반적인 함수에 비해 실행속도가 빠른 장점이 있지만, 정의하기가 어렵다는 단점이 있다. (매크로 함수란... define으로 처리해주는 함수를 의미한다. 괄호 하나 까딱 잘못하면 값이 망가진다. - 이처럼 정의하기 어려운 단점을 보완하고, 장점은 그대로 가져가는 것이 바로 inline 함수이다. 3. inline 함수의 특징?- 매크로(define)를 이용한 함수의 인라인화는 전처리기에 의해서 처리되지만, inline을 이용한 함수의 인라인화는 컴파일러에 의해 처리가 됨.- 따라서 컴파일러가 inline 키워드가 붙은 함수를 컴.. 2018. 8. 27.
[5] 크리티컬섹션, 뮤텍스, 세마포어 0. 크리티컬섹션(Critical Section)이란?- 사실 뮤텍스, 세마포어를 하기 전에 크리티컬 섹션의 개념부터 바로잡고 가는 것이 좋다. - 한 마디로 요약하면, 한 순간에 하나의 쓰레드만 접근이 요구되는 공유 자원에 접근 하는 코드 영역을 의미한다. - 사실 쓰면서도 뭐 저렇게 어렵게 설명하나 싶다. - 크리티컬섹션에 대해 공부할 정도쯤 되었다면, 프로세스와 쓰레드 정도는 이미 공부 했을 것이라고 생각한다. - 그러므로 하나의 프로세스 안에는 1개 이상의 쓰레드들이 존재한다는 것쯤은 다 알고 있을 것이다. - 또한, 각 쓰레드들은 각자의 Stack과 Register만 독립적으로 갖고 있고, 나머지 자원들은 '공유'함을 알고 있을 것이다. - 문제는 이거 때문에 발생한다. 예를 들어보자. ex) .. 2018. 8. 17.
[8] Binary Search 이진 탐색(Binary Search)이란?- 순차 탐색이 간단하고 작은 배열의 탐색에 효과적이라고 한다면- 큰 배열의 탐색에 적합한 탐색 기법.- 배열의 중앙에 있는 값을 조사 → 찾고자 하는 값이 왼쪽인지 오른쪽인지 조사 → 탐색의 범위를 반으로 줄임- 위의 메커니즘을 계속해서 반복하여 원하는 값을 적은 횟수로 찾아낼 수 있음. (술게임에서 Up & Down을 생각하면 편하다)- 시간 복잡도 O(logn) 1234567891011121314int binary_search(int value, int left, int right) { int mid; // left 2018. 7. 19.
[7] Heap Sort, Quick Sort Heap정렬을 하기 전에... Heap이란?- Heap은 '더미'라는 뜻을 갖고 있음. (완전 이진 트리 기반의 더미와 모습이 비슷한 자료 구조를 의미) - Heap은 완전 이진 트리(Complete Binary Tree)다. (이진 탐색 트리와는 다르게 중복을 허용한다) - 여러 개의 값들 중, 가장 큰 값이나 가장 작은 값을 빠르게 찾아내도록 만들어진 자료 구조.- 부모 노드의 Key >= 자식 노드의 Key : MAX Heap- 부모 노드의 Key 부모 노드의 키 값 : 삽입 노드와 부모 노드 Swapelse ) 종료3) 삽입 노드로 계속 2번을 종료될 때까지 반복. [Code] 12345678910111213141516171819202122232425#include#include typedef s.. 2018. 7. 18.