[BOJ] 11279 최대 힙
이 문제는 최상위 노드를 유지해주는 heqp을 이용해서 풀이한다. 최대힙은 최대값이 최상위 노드에, 최소힙은 최소값이 최상위 노드에 위치하는데
python에서 제공하는 heapq는 최소힙이 구현되어있다. 이를 최대힙으로 이용하는 방법은
heapq에 값을 넣어주는 heappush
에는 -를 삽입하여 반전된 값을 넣어주고 값을 꺼내올 때는 heappop
일 이용학고 반환된 값에 -를 붙여서 원상복구 시켜주면 된다.
나의 풀이
import sys
import heapq
N = int(sys.stdin.readline())
q = []
result = []
for i in range(N):
x = int(sys.stdin.readline())
if(x==0):
if(len(q)==0):
result.append(0)
else:
result.append(-(heapq.heappop(q)))
else:
heapq.heappush(q, -x)
for i in result:
print(i)