공부 기록장

[백준 - Python] 11279. 최대 힙 본문

코딩 테스트/백준 문제 풀이

[백준 - Python] 11279. 최대 힙

빛나무 2024. 8. 30. 01:43

https://www.acmicpc.net/problem/11279

 

코드

import sys, heapq
input = sys.stdin.readline

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

 

접근 방식

1. 주어진 수가 0이 아닌 경우, 그 수를 -1을 곱해서 음수로 만들어 최대 힙으로 활용할 최소 힙에 넣는다

2. 주어진 수가 0인 경우, 최대 힙에서 가장 큰 값을 꺼내서 출력하고, 힙이 비어 있으면 0을 출력한다

 

배운 점

1. 최대 힙 구현은 모든 값을 음수로 변환해 구현한다