백준 11286 - 절댓값 힙 (Python3)
코드
import heapq
n = int(input())
heap = []
for _ in range(n):
cmd = int(input())
if cmd == 0:
if not heap:
print(0)
else:
p = heapq.heappop(heap)
print(p[1])
else:
heapq.heappush(heap, (abs(cmd), cmd))
문제 해설
우선 순위 큐 (heapq)의 응용 문제이다.
heapq에 값을 넣어줄 때, 튜플의 형식으로 입력하면 튜플의 첫번째 요소를 기준으로 우선 순위를 반영하여 pop해준다. (Python은 최소 힙으로 동작하니 작은 값이 먼저 나옴)
위의 성질을 이용하여 구현하면 간단하게 해결할 수 있다.
댓글남기기