본문 바로가기

[BOJ] - Python

[백준] 11279 : 최대 힙 python

import sys
import heapq
input = sys.stdin.readline

h = []

n = int(input())

for i in range(n):
    x = int(input())
    if x==0:
        if not h:
            print(0)
        else:
            print(heapq.heappop(h)[1])
    else:
        heapq.heappush(h,(-x,x))

 

heapq.heappush(heap, (-item,item))

튜플형식으로 음수값과 함께 원래 값을 힙에 추가하면

튜플의 첫 번째 원소인 -item으로 최소 힙 정렬을 수행하기 때문에 최대 힙 정렬을 수행한 것과 같은 효과가 일어난다.

 

heapq.heappop(heap)[1]

pop할 때에는 튜플의 두 번째 값을 꺼내오면 된다.