import heapq
import sys
input = sys.stdin.readline
n = int(input())
arr = []
for _ in range(n) :
num = int(input())
if num != 0 :
heapq.heappush(arr, num)
else :
if len(arr) == 0 :
print(0)
else :
print(heapq.heappop(arr))
파이썬의 heapq를 이용해서 문제를 풀었다.
파이썬의 heapq는 최소 힙 구조를 기반으로 하는 파이썬의 우선순위 큐 라이브러리이므로 이 문제를 풀 수 있었다.
정리를 통해 이해할 수 있었다.
import heapq
import sys
input = sys.stdin.readline
n = int(input())
arr = []
for _ in range(n) :
num = int(input())
if num != 0 :
heapq.heappush(arr, -num)
else :
if len(arr) == 0 :
print(0)
else :
popNum = heapq.heappop(arr)
print(-popNum)
최대 힙은 최소 힙의 문제와 푸는 방법은 완전히 동일하다.
다른 점은 heapq가 최소 힙 구조를 기반으로 하므로 숫자를 push할 때 -기호를 붙여주고,
pop할 때 또 -기호를 붙여서 원래대로 돌려주면 된다.