알고리즘 문제들 으악/백준

[python]11279번 최대 힙, 힙 사용법

빈나 2022. 12. 12. 20:29
반응형

힙의 자료구조 설명하기 위한 문제였다.

파이썬은 힙을 모듈로 구현하여 함수 입력만 하면 해결되었다.

내가 참고한 블로그는 이분이었다.

https://www.daleseo.com/python-heapq/

 

파이썬의 heapq 모듈로 힙 자료구조 사용하기

Engineering Blog by Dale Seo

www.daleseo.com

너무 깔끔하게 설명하셨다.

정리하면 heappush하면 이진트리 순서대로 추가되고,

heappop을 하면 기본적으로 최소 값을 삭제하고 그다음 최솟값이 그 자리에 들어간다.

from heapq import heappush,heappop
import sys
input = sys.stdin.readline
stg = []
for i in range(int(input().strip())):
    call = int(input().strip())
    if call>0:
        heappush(stg,(-call,call))
    else:
        if stg:
            print(heappop(stg)[1])
        else:
            print(0)

이 문제에서는 최대 힙을 구현해야하기에, 큰 값을 빼야했다.

그래서 튜플로 기준이 되는 앞의 값을 음수로 취해 가장 작게 만들고

heapop을 print할 때에는 튜플의 1번째 값을 출력하여 최대값을 보였다.

반응형