널리 잘 알려진 자료구조 중 최소 힙이 있다. 최소 힙을 이용하여 다음과 같은 연산을 지원하는 프로그램을 작성하시오.
배열에 자연수 x를 넣는다.
배열에서 가장 작은 값을 출력하고, 그 값을 배열에서 제거한다.
프로그램은 처음에 비어있는 배열에서 시작하게 된다.
출처 : https://www.acmicpc.net/problem/1927
- heapq
- 숫자를 입력받는다.
- 숫자가 0이고 힙이 비어있으면 그냥 0을 출력한다.
- 그게 아니라 숫자가 0이기만 하면(힙은 비어있지 않음) 12번째 줄 heapq.heappop(min_heap)을 통해 최소 힙을 제거하면서 출력한다.
- 2,3에 해당 사항이 없다면 입력값을 heappush해준다.
mine
import sys import heapq input = lambda: sys.stdin.readline() n = int(input()) min_heap = [] for i in range(n): number = int(input()) if number == 0 and not min_heap: print(0) elif number == 0: print(heapq.heappop(min_heap)) else: heapq.heappush(min_heap, number)