문제
풀이
파이썬에 내장된 힙(heap)모듈을 사용하여 풀 수 있다. 이것은 기본적으로 min heap이므로 약간의 처리가 필요하다. 삽입 시 리스트의 형태([-x, x])로 삽입하는 방식으로 max heap을 구현할 수 있다. 파이썬에서 정렬은 첫번째 원소를 기준으로 이루어지기 때문이다.
코드
import sys
import heapq as hq
def get_max(x):
if heap:
_max = hq.heappop(heap)
return _max[1]
else:
return 0
def insert_num(x):
hq.heappush(heap, [-x, x])
n = int(sys.stdin.readline().strip())
heap = []
for _ in range(n):
x = int(sys.stdin.readline().strip())
if not x:
print(get_max(x))
else:
insert_num(x)
'CS > 알고리즘 문제 풀이' 카테고리의 다른 글
[백준] 2468 - 안전 영역 [Python(파이썬)] (0) | 2021.01.23 |
---|---|
[백준] 1780 - 종이의 개수 [Python(파이썬)] (0) | 2021.01.23 |
[백준] 10819 - 차이를 최대로 [Python(파이썬)] (0) | 2021.01.23 |
[백준] 1929 - 소수구하기 [Python(파이썬)] (0) | 2021.01.23 |
[백준] 1949 - 우수 마을 [Python(파이썬)] (0) | 2021.01.20 |