알고리즘(algorithm)

우선순위 큐 min-heap , max-heap 만드는 법 파이썬

이거시원조랑께 2023. 8. 14. 07:55
반응형
import heapq

numbers = []


#min-heap 파이썬은 min-heap이 기본사항이라 값 넣으면 자동으로 루트(최상단)에 최소값이 옴
heapq.heappush(numbers,숫자) // 자동으로 오름차순(정확히는 이진트리 형식)으로 정렬 됨
print(heapq.heappop(numbers)) // 루트 노드에 있는 가장 작은 값 제거 후 반환
# 출력예시: heaqp[1,2,3,4....]
# max-heap 숫자를 넣을때 - 부호를 붙여주고 꺼내쓸때 -부호를 다시 붙여주면 max-heap 가능

counts = []
heapq.heappush(counts, -숫자)
print(-heap.heappop(counts))
# 출력예시: heapq[6,5,4,3,...]

파이썬에서 우선순위 큐(heapq)는 리스트에 적용해서 사용하는 방식임

min-heap이 기본사항이라 최상단 루트에는 항상 최솟값이 들어감

이진트리 방식으로 추가와 삭제시 빅O(N)의 시간복잡도가 필요함

max-heap으로 사용하는 꼼수는 기억해둘 것.

반응형