나의 풀이
# 입력
import heapq
n,*l = open(0)
heap = []
# 처리
for x in l:
if (x:=(-int(x))) == 0:
try:
print(-heapq.heappop(heap))
except:
print(0)
else:
heapq.heappush(heap,x)
CODE REVIEW
- python에서 제공하는 heapq - 힙 큐 알고리즘을 이용.
- 참고로 heapq 모듈의 documentation에 등장하는 관련 method는 다음과 같다
- 삽입:
heapq.heappush(heap, item)
- 삭제:
heapq.heappop(item)
만일 힙이 비어있으면IndexError
발생.
- 삽입:
- 문제는
heapq
모듈은 최솟값, 즉 min heap만 다룰 수 있다는 점인데, 이를 해결하기 위해 입력 받는 x의 부호를 (-)로 바꾸어 반전시켜서 heapq을 이용했다.