우선순위 큐는 우선순위를 가지는 데이터들을 저장하는 큐를 의미한다. 데이터를 우선순위에 따라 처리하고 싶을 때 사용하는 자료구조이다.
⭐ 단순히 리스트를 이용해서 구현할 수 있다.
⭐ 힙(heap)을 이용하여 구현할 수 있다.
⏩ 시간복잡도
최소 힙은 부모 노드가 자식 노드보다 값이 작은 완전 이진트리를 의미한다.
최대 힙은 부모 노드가 자식 노드보다 값이 큰 완전 이진트리를 의미한다.
💯 우선순위 큐는 추상 자료형(ADT) 즉 순수하게 기능이 무엇인지를 나열한 것을 의미하고, Heap은 이러한 기능을 구현하기위한 도구라고 생각하자.
from heapq import heapify
heap = [4, 1, 7, 3, 8, 5]
heapify(heap)
print(heap)
#=====================
[1, 3, 5, 4, 8, 7]
from heapq import heappop, heappush
h = []
heappush(h,value)
heappop(h)
from heapq import heappop, heappush
h = []
heappush(h,-value)
-heappop(h)