널리 잘 알려진 자료구조 중 최대 힙이 있다. 최대 힙을 이용하여 다음과 같은 연산을 지원하는 프로그램을 작성하시오.
배열에 자연수 x를 넣는다.
배열에서 가장 큰 값을 출력하고, 그 값을 배열에서 제거한다.
프로그램은 처음에 비어있는 배열에서 시작하게 된다.
출처 : https://www.acmicpc.net/problem/11279
- 최대 힙
- import heapq
- 입력 값을 heappush
- 만약 입력값이 0이면 최대 힙을 가져온다.
중요 : heapq.heappop(max_heap)을 하면 최소 힙을 가져온다. 따라서 첫 원소의 최소값을 가진 두번째 원소를 반환하면 최대값이 된다.
출처 : https://littlefoxdiary.tistory.com/3
mine
import sys import heapq input = lambda: sys.stdin.readline() n = int(input()) max_heap = [] for i in range(n): number = int(input()) heapq.heappush(max_heap, (-number, number)) if number == 0: print(heapq.heappop(max_heap)[1])