백준 11286번 바로가기

나의 풀이

# 입력
import sys
import heapq

n = int(sys.stdin.readline().strip())
heap = []

# 처리
for x in sys.stdin:
  if (x := (int(x))) == 0:
    try:
      print(heapq.heappop(heap)[1])
    except:
      print(0)
  else:
    heapq.heappush(heap, (abs(x), x))

CODE REVIEW

  1. 11279번 - 최대 힙 & 1927번 - 최소 힙과 매우 유사한 문제.
  2. heapq로 절댓값 힙을 구현하기 위해서 heapq.heappush() 해줄 때에 (x의 절댓값, x)을 함께 넣어주었다. 정렬은 x의 절댓값으로 되고, 출력은 heappop()했을 때에 index 1인 요소를 출력해주면 된다.