패스잇
CS 기초 · 중급

우선순위 큐(Priority Queue)를 구현할 때 힙(Heap) 자료구조를 사용하는 주된 이유와, 힙의 삽입 및 삭제 연산이 어떻게 동작하는지 설명해주세요.

힌트 · 힙은 O(log N)의 시간 복잡도로 가장 크거나 작은 요소를 빠르게 찾고 삽입/삭제할 수 있어 우선순위 큐에 적합합니다.

시간 복잡도최소 힙/최대 힙완전 이진 트리힙 속성상향식/하향식

모범답안

우선순위 큐를 구현할 때 힙을 사용하는 가장 큰 이유는 효율성입니다. 힙은 O(log N)의 시간 복잡도로 삽입과 삭제 연산을 수행할 수 있기 때문입니다. 우선순위 큐는 가장 높은(또는 가장 낮은) 우선순위를 가진 요소를 빠르게 찾고 제거해야 하는데, 힙은 이러한 요구사항을 완벽하게 충족합니다.

힙은 완전 이진 트리 구조를 가지며, 최소 힙이나 최대 힙이라는 힙 속성을 유지합니다. 최소 힙은 부모 노드가 항상 자식 노드보다 작거나 같고, 최대 힙은 부모 노드가 항상 자식 노드보다 크거나 같습니다.

삽입 연산은 새로운 요소를 트리의 가장 마지막 레벨에 추가한 후, 힙 속성을 만족하도록 부모 노드와 비교하며 위로 올라가는 '상향식(bubble-up)' 과정을 거칩니다. 삭제 연산은 루트 노드를 제거하고, 트리의 가장 마지막 노드를 루트로 옮긴 후, 힙 속성을 만족하도록 자식 노드와 비교하며 아래로 내려가는 '하향식(bubble-down)' 과정을 거칩니다. 이 두 연산 모두 트리의 높이에 비례하는 시간 복잡도를 가지므로 O(log N)이 됩니다.

읽었다면, 이제 직접 답해볼 차례예요

패스잇 앱에서 이 질문에 말로 답하면 AI가 꼬리질문까지 이어가며 1:1 코칭합니다.

함께 보는 알고리즘 면접 질문

← 알고리즘 면접 질문 전체 보기