[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)