Programming/백준
[실버 2] 백준 1927 - 최소 힙 (파이썬)
pental
2025. 7. 29. 15:47
분류 : 자료구조
링크 : https://www.acmicpc.net/problem/1927
풀이
힙의 기초적인 문제이다. 사실 시간초과가 나긴했는데, sys.stdin.readline을 고려하지 못했다.
문제에서는 N이 최대 10만개이기 때문에 단순히 input()으로만으로는 당연히 시간 초과가 날 수 밖에 없다.
문제에서 N을 입력받고, 다음 N개의 줄에는 연산에 대한 정보를 나타내는 정수 X가 주어진다고 한다.
X가 0이 아닌 경우에는 배열에 자연수 X를 넣고, 0이라면 배열에서 가장 작은 값을 출력하고, 그 값을 배열에서 제거하면 된다.
이에 적합한 자료구조는 heap이기에 아래와 같은 코드로 작성하였다.
코드
# 백준 1927 - 최소 힙
import heapq
import sys
input = sys.stdin.readline
N = int(input())
heap = []
for i in range(N) :
x = int(input())
if x == 0 :
if len(heap) > 0 :
print(heapq.heappop(heap))
else :
print(0)
else :
heapq.heappush(heap, x)