sm 기술 블로그
182. 11279(최대 힙) - 파이썬 본문
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
기본적으로 우선순위 큐는 오름차순으로 진행된다.
하지만 우리는 내림차순이 필요하다 따라서 큐에 값을 집어 넣기 전에, -를 붙여 넣어주자.
그러면 비록 - 형태이지만 절대값 기준으로는 내림차순으로 정렬된다.
출력을 해줄 때 다시 -를 붙여줌으로써 간단히 해결 가능하다.
'문제 > 백준_파이썬' 카테고리의 다른 글
184. 11286(절댓값 힙) - 파이썬 (0) | 2022.08.22 |
---|---|
183. 1927(최소 힙) - 파이썬 (0) | 2022.08.22 |
181. 12015(가장 긴 증가하는 부분 수열2) - 파이썬 (0) | 2022.08.21 |
180. 1300(K번째 수) - 파이썬 (0) | 2022.08.17 |
179. 2110(공유기 설치) - 파이썬 (0) | 2022.08.16 |
Comments