문제/백준_파이썬
182. 11279(최대 힙) - 파이썬
sm_hope
2022. 8. 21. 15:55
from queue import PriorityQueue
import sys
input = sys.stdin.readline
N = int(input())
que = PriorityQueue(maxsize=N)
result = []
for _ in range(N):
X = int(input())
if X == 0:
if que.empty():
result.append("0")
else:
result.append(str(-que.get()))
else:
que.put(-X)
for val in result:
print(val)
문제요약
값을 입력하는데 0이면 현재 입력된 값 중에 가장 큰 값을 출력하라.(내림차순 필요)
설명
우선순위 큐를 이용한다.
유선순위 큐에 대해서는 다음을 참고하자.
https://smhope.tistory.com/485?category=1056187
기본적으로 우선순위 큐는 오름차순으로 진행된다.
하지만 우리는 내림차순이 필요하다 따라서 큐에 값을 집어 넣기 전에, -를 붙여 넣어주자.
그러면 비록 - 형태이지만 절대값 기준으로는 내림차순으로 정렬된다.
출력을 해줄 때 다시 -를 붙여줌으로써 간단히 해결 가능하다.