본문 바로가기
[C++] 전처리 지시자 전처리 지시자란 전처리기에 전달할 사항을 표현하며 #으로 시작한다. 가령 #include 은 iosteam 헤더 파일에 있는 내용을 현재 파일에서 사용할 수 있게 모두 가져오도록 전처리기에 지시한다. 헤더 파일은 주로 나중에 소스 파일에서 구현할 함수를 선언하는 용도로 사용된다. #include [파일] 지정한 '파일'의 내용을 지시자 위치에 넣는다. #define [키] [값] 코드에서 '키'에 해당하는 부분을 모두 '값'으로 지정한 애용으로 바꾼다. #ifdef [키] #endif '키'가 #define 문으로 정의되었다면 ifdef로 묶인 코드 블럭을 포함시킨다. #ifndef [키] #endif '키'가 #define 문으로 정의되지 않았다면 ifndef로 묶인 코드 블럭을 제외한다. #pragm.. 2021. 6. 17.
[자료구조] 셋 (Set) 개념 셋(Set)은 분리 객체들의 컨테이너이다. 즉, 집합 내에 중복되는 원소가 없고 순서나 키의 명백한 개념도 없다. 추상 데이터 타입(ADT) insert(e): 셋에 원소 e를 삽입하고, 원소의 위치 iterator를 반환한다. 만약 셋에 이미 e가 존재하면 연산을 무시한다. find(e): 만약 셋에 e가 존재하면 그 iterator를 반환하고, 그렇지 않으면 end iterator를 반환한다. erase(e): 셋에서 e를 제거한다. lower_bound(e): 셋에서 e보다 작거나 같은 원소 중 가장 큰 원소의 iterator를 반환한다. upper_bound(e): 셋에서 e보다 크거나 같은 원소 중 가장 작은 원소의 iterator를 반환한다. 2021. 6. 17.
[알고리즘] 기수 정렬(Radix Sort) 기수 정렬은 정렬 시간이 $O(n\log{n})$ 이하로 소요되는 정렬이다. ...작성중... 2021. 6. 17.
[알고리즘] 버킷 정렬(Bucket Sort) 버킷 정렬은 정렬 시간이 $O(n\log{n})$ 이하로 소요되는 정렬이다. 배열에 들어있는 원소에 따라 적절히 버킷을 나눈다. 배열에 들어있는 원소를 규칙에 따라 버킷에 나눠 넣는다. 각각의 버킷을 정렬한다. 버킷을 순서대로 방문하며 모든 원소를 다시 배열에 넣는다. ...작성중... 2021. 6. 17.
[알고리즘] 퀵 정렬(Quick Sort) 퀵 정렬은 병합 정렬과 마찬가지로 분할과 정복 패러다임에 기반하고 있지만 모든 힘든 작업이 재귀 호출 앞에 행해지기 때문에 다소 정반대의 방법이다. 분할과 정복 분할과 정복 패러다임은 다음의 세 단계로 이루어진 일반적인 용어로 설명될 수 있다. 분할(Divide): 배열이 적어도 2개의 원소를 갖고 있다면 배열로부터 피봇(pivot)이라고 불리는 특정한 원소 x를 선택한다. 일반적으로 배열의 마지막 원소를 피봇 x로 선택한다. 배열로 부터 모든 원소를 삭제하여 이들을 세 개의 배열에 넣는다. 세 배열은 각각 x보다 작은 원소(L), x와 같은 원소(E), x보다 큰 원소(G)가 저장된다. 재귀(Recur): 재귀적으로 시퀀스 L과 G를 정렬한다. 정복(Conquer): 먼저 L의 원소, 다음 E의 원소,.. 2021. 6. 16.
반응형