반응형
https://www.acmicpc.net/problem/1927
이 문제와 최대 힙 문제는 heapq 모듈을 알면 정말 쉽게 풀 수 있는 문제다.
https://solution-is-here.tistory.com/114
heapq 모듈을 잘 모른다면 위에 글을 읽고 오면 된다!
heapq모듈을 잘 안다는 가정 하에서 설명 하겠다.
문제를 확인하면 정말 쉬운 문제임을 확인할 수 있다!
솔직히 이 문제는 브론즈 문제여도 이의 제기를 못 할 문제다...(파이썬 기준)
문제를 보고 이해해야 할 규칙 몇 가지가 있다.
숫자 0이 주어질 때는 힙에서 가장 작은 숫자를 출력한다. 만약 숫자가 없다면 0을 출력한다.
0이 아닌 수가 주어질때는 최소힙을 준수하면서 리스트에 숫자를 넣어준다.
1
2
3
4
5
6
7
8
9
10
|
for i in range(num):
heap_num = int(input())
if heap_num != 0:
heapq.heappush(heap,heap_num)
else:
try:
result_num = heapq.heappop(heap)
print(result_num)
except:
print("0")
|
cs |
heappush 함수와 heappop 함수를 사용하면 쉽게 구현할 수 있다.
정답 코드:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
import heapq
import sys
input = sys.stdin.readline
heap = []
num = int(input())
for i in range(num):
heap_num = int(input())
if heap_num != 0:
heapq.heappush(heap,heap_num)
else:
try:
result_num = heapq.heappop(heap)
print(result_num)
except:
print("0")
|
cs |
반응형