# Topic : Data_Structur_2 _ 최대 힙
#
# PyPy 3 : 232ms
import sys
import heapq
N = int(sys.stdin.readline())
heap = []
for _ in range(N):
x = int(sys.stdin.readline())
if x != 0:
heapq.heappush(heap, (-x,x))
else:
try:
print(heapq.heappop(heap)[1])
except:
print(0)
heapq module
- heapq 모듈은 이진 트리(binary tree) 기반의 최소 힙(min heap) 자료구조를 제공한다.
- 최소 힙을 사용하면 원소들이 항상 정렬된 상태로 추가되고 삭제되며, 최소 힙에서 가장 작은값은 언제나 인덱스 0, 즉, 이진 트리의 루트에 위치한다.
- 내부적으로 모든 원소는 항상 자식 원소보다 크기가 작거나 같도록 추가된다.
- 튜플을 원소로 추가시 튜플의 첫번째 값을 기준으로 정렬된다.(튜플을 사용하면 다양한 응용이 가능하다!)
- 원소 추가 :
heapq.heappush(”저장할 배열”, 추가할 원소)
- 원소 삭제 :
heapq.heappop(”저장할 배열”)
- 기존 리스트를 힙으로 변경 :
heapq.heapify(”저장할 배열”)
heapq - Heap queue algorithm - Python 3.10.4 documentation