/* 문제 */
널리 잘 알려진 자료구조 중 최소 힙이 있다. 최소 힙을 이용하여 다음과 같은 연산을 지원하는 프로그램을 작성하시오.
1. 배열에 자연수 x를 넣는다.
2. 배열에서 가장 작은 값을 출력하고, 그 값을 배열에서 제거한다.
프로그램은 처음에 비어있는 배열에서 시작하게 된다.
최소 힙을 구현해보는 문제다. 파이썬의 내장 모듈 heapq를 사용했다.
# 정답 코드
import sys
input = sys.stdin.readline
import heapq
heap = []
n = int(input())
for _ in range(n):
x = int(input())
if x == 0:
if len(heap) == 0:
print(0)
else:
print(heapq.heappop(heap))
else:
heapq.heappush(heap, x)
heapq 모듈은 리스트를 힙처럼 사용할 수 있도록 해주는 것이기 때문에 hapq의 함수를 호출할 때마다 리스트를 인자로 넘겨주어야 한다.
728x90
'Algorithm' 카테고리의 다른 글
[7662] 이중 우선순위 큐 - Python (0) | 2023.03.10 |
---|---|
[11279] 최대 힙 - Python (0) | 2023.03.10 |
Heap (1) | 2023.03.10 |
[13913] 숨바꼭질 4 - Python (0) | 2023.03.02 |
[12852] 1로 만들기 2 - Python (0) | 2023.03.02 |