import heapq
이진트리기반 최소힙 제공
→ 최소값이 항상 인덱스 0
내부적으로 모든 원소는 항상 자식 원소보다 작거나 같도록 추가/삭제
heap = []
→ 일반 리스트를 마치 최소힙처럼 다룰 수 있게 제공
heapq.heappush(heap, 1)
heapq.heappush(heap, 5)
heapq.heappush(heap, 4)
print(heap)
#[1, 4, 5]
: heap[0] 삭제 후 그 값 리턴
heapq.heappop(heap)
print(heap)
#[4,5]
heap = [4, 7, 3, 5, 1]
heapq.heapify(heap)
print(heap)
#[1, 3, 4, 5, 7]
: (우선순위, 값) 구조의 튜플을 힙에 추가
∵ 힙에 튜플 추가,삭제 시 튜플의 첫번째 원소 기준으로 최소 힙 구성
import heapq
nums = [4, 7, 3, 5, 1]
heap = []
for num in nums:
heapq.heappush(heap, (-num, num))