-
이것이 코딩테스트다. 나동빈 신님의 강의를 바탕으로 작성하였습니다.
우선순위 큐
우선순위 큐는 '우선순위가 가장 높은 데이터를 가장 먼저 삭제하는 자료구조'이다.
우선순위 큐는 데이터를 '우선순위에 따라' 처리하고 싶을 때 사용한다.
예) 물건 데이터를 자료구조에 넣었다가 가치가 높은 물건부터 꺼내서 확인하는 경우자료구조 추출데이터 스택 가장 나중에 삽입된 데이터 큐 가장 먼저 삽입된 데이터 (비교적 공평한 자료구조) 우선순위 큐 우선순위가 높은 데이터 우선순위 큐를 구현하는 방법은 다양함.
1) 단순히 '리스트를 이용한 구현'
2) '힙을 이용한 구현'
데이터의 개수가 N개 일 때, 구현 방식에 따라 시간 복잡도를 비교한 내용은 다음과 같다.우선순위 큐 구현 방식 삽입시간 삭제 시간 리스트 O(1) O(N) 힙 O(log N) O(log N) 단순히 N개의 데이터를 힙에 넣었다가 모두 꺼내는 작업은 정렬과 동일. (힙 정렬)
이 경우 시간 복잡도는 O(N logN) 이다.힙의 특징
힙은 완전 이진 트리 자료구조의 일종임.
힙에서는 항상 '루트 노드를 제거함'
최소 힙
-루트 노드가 가장 작은 값을 가짐.
-따라서 값이 작은 데이터가 우선적으로 제거 됨.
최대 힙
-루트 노드가 가장 큰 값을 가짐.
-따라서 값이 큰 데이터가 우선적으로 제거 됨.
완전 이진 트리완전 이진 트리란 루트 노드부터 시작하여 왼쪽 자식 노드, 오른쪽 자식 노드 순서대로 데이터가
차례대로 삽입되는 트리를 의미함.
최소 힙 구성 함수 : Min-Heapify()
(상향식) 부모 노드로 거슬러 올라가며, 부모보다 자신의 값이 더 작은 경우에 위치를 교체함.
새로운 원소가 삽입될 때
새로운 원소가 삽입되었을 때, O(logN)의 시간 복잡도로 힙 성질을 유지하도록 할 수 있음.
원소가 제거될 때
원소가 제거되었을 때 O(logN)의 시간 복잡도로 힙 성질을 유지하도록 할 수 있음.
-원소를 제거할 때는 가장 마지막 노드가 루트 노드의 위치에 오도록 함.
-이후에 루트 노드에서 하양식으로(더 작은 자식 노드로) Heapify()를 진행함.
'개발 > 이코테' 카테고리의 다른 글
최소 공통 조상 (Lowest Common Ancestor) 정의, 원리 (0) 2022.04.24 이진 탐색 트리 정의, 동작 방법, 트리의 순회 (전위, 중위, 후위) (0) 2022.04.22 서버와 클라이언트 개념, HTTP 정의 (0) 2022.04.22 개발형 코딩 테스트 알아보기 (0) 2022.04.22 구간 합 알고리즘 동작 방법, 정의 (0) 2022.04.22 댓글 (비로그인 댓글 허용하지 않습니다.)