반응형
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으로 사용하는 꼼수는 기억해둘 것.
반응형
'알고리즘(algorithm)' 카테고리의 다른 글
그래프의 개념 (컴공선배) (0) | 2023.08.22 |
---|---|
탐욕법 Greedy Algorithm (feat.컴공선배) (0) | 2023.08.21 |
완전탐색 (컴공선배 알고리즘 강의) (0) | 2023.08.17 |
맵, 집합, 우선순위 큐 (0) | 2023.08.13 |
배열과 링크드리스트에서의 빅오 [알고리즘 코딩 테스트 입문부터 합격까지 (Feat. 컴공선배 알고리즘캠프)] (0) | 2023.08.12 |