[BOJ] 11286 절댓값 힙

우선순위 큐


이 문제는 절댓값이 가장 작은 값을 뽑아내는 우선순위 큐를 만드는 문제였다. 0이 주어지면 pop 다른 숫자는 push를 하는 문제였다.

간단하게 튜플을 이용하여 해결할 수 있다. (abs(X), X) 형태의 튜플로 넣어서 key를 절댓값으로 유지하고 원본도 절댓값이 같다면 X가 작은 minheap 형태로 유지할 수 있다.

구현


import sys
import heapq

if __name__ == "__main__":
    N = int(sys.stdin.readline().rstrip())
    array = []
    for _ in range(N):
        X = int(sys.stdin.readline().rstrip())
        if X:
            heapq.heappush(array, (abs(X), X))
        else:
            if array:
                print(heapq.heappop(array)[1])
            else:
                print(0)