[baekjoon] 최대 힙

김민서·2024년 1월 6일
0

알고리즘 문제풀이

목록 보기
16/47

링크텍스트
널리 잘 알려진 자료구조 중 최대 힙이 있다. 최대 힙을 이용하여 다음과 같은 연산을 지원하는 프로그램을 작성하시오.

  1. 배열에 자연수 x를 넣는다.
  2. 배열에서 가장 큰 값을 출력하고, 그 값을 배열에서 제거한다.
    프로그램은 처음에 비어있는 배열에서 시작하게 된다.

최소 힙 문제와 같다.

from heapq import heappop, heappush

heap = []
output = []

n = int(input())

for i in range(n):
    x = int(input())
    if x == 0:
        if heap:
            output.append(heappop(heap) * -1)		# 최소힙을 최대힙처럼 사용
        else:
            output.append(0)
    else:
        heappush(heap, x * -1)
        
for i in output:
    print(i)

0개의 댓글