자료구조

[자료구조] 우선순위 큐 (Priority Queue)

비번변경 2023. 10. 20. 19:05

우선순위 큐 (Priority Queue)

큐나 스택과 같은 자료 구조 중 하나로, 각 원소가 우선순위를 가지고 있는 것이 특징이다. 우선순위 큐에서 높은 우선순위를 가진 원소가 낮은 우선순위를 가진 원소보다 먼저 처리된다. 우선순위가 같은 원소는 우선순위 큐 내 순서를 기준으로 처리된다.

 

 

 

우선순위 큐 == 힙 (?)

인터넷에 우선순위 큐에 대해 찾다 보면 힙과 함께 정리한 글이 많이 보이는데, 우선순위 큐가 힙이라고 할 수는 없다.

우선순위 큐는 리스트나 맵과 같은 추상적인 개념으로 힙, 배열, 연결 리스트 또는 다른 방식으로 구현할 수 있다. 다만 시간복잡도 등의 이유로 일반적으로 힙으로 많이 구현하는 것 같다.

아래는 우선순위 큐의 구현 방식에 따른 enqueue / dequeue 연산의 시간복잡도를 비교한 표이다.

구현 방식 enqueue dequeue
배열 O(1) O(N)
연결 리스트 O(1) O(N)
정렬 배열 O(N) O(1)
정렬 연결 리스트 O(N) O(1)
O(logN) O(logN)

 

 

지원 연산

우선순위 큐는 아래와 같은 연산이 지원되어야 한다.

  • 우선순위를 지정해 원소를 큐에 추가한다.
  • 가장 높은 우선순위를 가진 원소를 큐에서 제거하고 반환한다.

 

 

참고 문서

우선순위 큐

https://www.happycoders.eu/algorithms/priorityqueue-java/