[백준] 최소 힙
[백준] 최소 힙
풀이
널리 잘 알려진 자료구조 중 최소 힙이 있다. 최소 힙을 이용하여 다음과 같은 연산을 지원하는 프로그램을 작성하시오.
- 배열에 자연수 x를 넣는다.
- 배열에서 가장 작은 값을 출력하고, 그 값을 배열에서 제거한다.
프로그램은 처음에 비어있는 배열에서 시작하게 된다.
import heapq
import sys
n = int(input())
q = []
ans = []
for _ in range(n):
input_num = int(sys.stdin.readline())
if input_num == 0:
if not q:
ans.append(0)
else:
ans.append(heapq.heappop(q))
else:
heapq.heappush(q, input_num)
for res in ans:
print(res)
실수 및 배운 점
- 가장 기본적인 heap에 대한 내용에 대해 정리했다.
heapq는 최소 힙을 default로 한다. 최소 힙은 가장 위의 값이 작은 값이고 완전 이진 트리를 기본으로 자료구조가 만들어진다.
이 힙을 통해 우선 순위 큐를 만든다.