반응형
https://www.acmicpc.net/problem/11279
import heapq
import sys
ssr = sys.stdin.readline
n = int(ssr())
h = []
for _ in range(n):
a = int(ssr())
if a > 0:
heapq.heappush(h,-a)
else:
if len(h) == 0:
print(0)
else:
print(-heapq.heappop(h))
이번엔 최대힙입니다. 파이썬의 heapq 모듈의 경우 기본적으로 최소힙이기 때문에 최대힙으로 사용하려면 약간 꼼수가 필요한데요. 원래 숫자를 음수로 바꿔버리면 큰 수일수록 작은 수가 되기 때문에 사실은 가장 큰 수를 맨 위 노드에 위치시킬수 있게 되는 것이죠. 마지막에 출력할 때 다시 부호를 바꿔주면 문제없이 제대로 출력되는 것을 확인할 수 있습니다.
반응형
'Problem Solving > BOJ' 카테고리의 다른 글
[BOJ][Python]11724번 풀이 (0) | 2022.06.16 |
---|---|
[BOJ][Python]2161번 풀이 (0) | 2022.06.14 |
[BOJ][Python]9372번 풀이 (0) | 2022.06.13 |
[BOJ][Python]19947번 풀이 (0) | 2022.06.13 |