[백준/Python] 11279번 : 최대 힙

문제

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

  • 최대 힙을 구현하는 문제

풀이

input이 크기 때문에 시간 초과가 발생하지 않도록 하기 위해서 sys.stdin.readline()을 활용하여 input을 처리했다. 파이썬에서 제공하는 우선순위 큐를 활용하여 최대 힙을 구현했다. 파이썬의 우선순위 큐는 기본적으로 최소 힙 방식으로 동작하기 때문에 부호를 반대로 하여 값을 저장하고 최대 힙처럼 동작하도록 하여 문제를 풀었다.

import sys
import heapq
input = sys.stdin.readline

# 최대 최솟값 -> 힙 사용
# 기존의 우선순위 큐는 최소 힙 구조임
# - 기호를 사용하면 최대 힙 구조로 활용할 수 있음
# 배열 요소의 최댓값 또는 최솟값을 구해야하는 문제에서 활용하기 좋다

N = int(input())
heap = []
for _ in range(N):
    x = int(input())
    # x is not 0
    if x:
        heapq.heappush(heap, -x)
    else:
        if heap:
            print(-heapq.heappop(heap))
        else:
            print(0)