코드

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은 최소 힙으로 동작하니 작은 값이 먼저 나옴)

위의 성질을 이용하여 구현하면 간단하게 해결할 수 있다.

댓글남기기