앞 전 문제와 유사한 최소힙 문제이다.
역시나 파이썬이기 때문에 heapq 라이브러리를 사용해주면 간단하게 해결할 수 있다.
import sys
import heapq
N = int(input())
heap = [] # 최소 힙
for _ in range(N):
calc = list(map(int, sys.stdin.readline().split()))
for num in calc:
if num == 0:
if heap: print(heapq.heappop(heap))
else: print(0)
else:
heapq.heappush(heap, num)
조건에서 시간 제한이 눈에 띄길래 입력 문자열을 input() 대신 sys.stdin.readline.split()로 받아서 절약하려고 했고, heapq의 heappush, heappop() 메소드를 적절히 활용하여 최소힙을 구현하였다.
즉, 입력 문자열이 0일 때는 배열에서 가장 작은 값을 출력한 후에 제거하는 것이므로 heap이 존재할 경우 print(heapq.heappop(heap)을 수행하도록, 반대로 heap 안에 원소가 없다면 0을 출력하도록 구현하였다.
그리고 0이 아닌 자연수라면 이를 heap에 넣기 위해 heappush 메소드로 삽입해주었다.
'Python' 카테고리의 다른 글
[백준/Python] 11286 : 절댓값 힙 (0) | 2024.11.17 |
---|---|
[백준/Python] 11279 : 최대 힙 (0) | 2024.11.16 |
[백준/Python] 2075 : N번째 큰 수 (0) | 2024.11.16 |
[백준/Python] 1476 : 날짜 계산 (0) | 2024.11.15 |
[백준/Python] 11726 : 2xn 타일링 (0) | 2024.11.03 |