[백준-1927, 11279] 최소 힙, 최대 힙

이말감·2022년 5월 1일
0

백준

목록 보기
41/49

문제

최소 힙 링크
최대 힙 링크

코드

최소 힙

import heapq
import sys
input = sys.stdin.readline

n = int(input())

arr = []

for _ in range(n) :
    num = int(input())
    if num != 0 :
        heapq.heappush(arr, num)
    else :
        if len(arr) == 0 :
            print(0)
        else :
            print(heapq.heappop(arr))

파이썬의 heapq를 이용해서 문제를 풀었다.
파이썬의 heapq는 최소 힙 구조를 기반으로 하는 파이썬의 우선순위 큐 라이브러리이므로 이 문제를 풀 수 있었다.
정리를 통해 이해할 수 있었다.

최대 힙

import heapq
import sys
input = sys.stdin.readline

n = int(input())

arr = []

for _ in range(n) :
    num = int(input())
    if num != 0 :
        heapq.heappush(arr, -num)
    else :
        if len(arr) == 0 :
            print(0)
        else :
            popNum = heapq.heappop(arr)
            print(-popNum)

최대 힙은 최소 힙의 문제와 푸는 방법은 완전히 동일하다.
다른 점은 heapq가 최소 힙 구조를 기반으로 하므로 숫자를 push할 때 -기호를 붙여주고,
pop할 때 또 -기호를 붙여서 원래대로 돌려주면 된다.

profile
전 척척학사지만 말하는 감자에요

0개의 댓글