백준 11279번 바로가기

나의 풀이

# 입력
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

  1. python에서 제공하는 heapq - 힙 큐 알고리즘을 이용.
  2. 참고로 heapq 모듈의 documentation에 등장하는 관련 method는 다음과 같다
    • 삽입: heapq.heappush(heap, item)
    • 삭제: heapq.heappop(item) 만일 힙이 비어있으면 IndexError 발생.
  3. 문제는 heapq 모듈은 최솟값, 즉 min heap만 다룰 수 있다는 점인데, 이를 해결하기 위해 입력 받는 x의 부호를 (-)로 바꾸어 반전시켜서 heapq을 이용했다.