Coding Test/BaekJoon_Python

백준 11279 <최대 힙> Python

JunOnJuly 2023. 12. 2. 11:14
728x90

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

 

11279번: 최대 힙

첫째 줄에 연산의 개수 N(1 ≤ N ≤ 100,000)이 주어진다. 다음 N개의 줄에는 연산에 대한 정보를 나타내는 정수 x가 주어진다. 만약 x가 자연수라면 배열에 x라는 값을 넣는(추가하는) 연산이고, x가 0

www.acmicpc.net


heapq 가 최소힙이라는걸 감안하고 입출력시 -1 을 곱해주면 쉽게 풀 수 있습니다.


import heapq
import sys


def solution(N, data_list):
    # 큐
    hq = []
    # 순차적으로 진행
    for data in data_list:
        # 0 이면
        if not data:
            # 큐가 비어있으면
            if not hq:
                print(0)
            # 아니면
            else:
                print(-heapq.heappop(hq))
        # 0 이 아니면
        else:
            heapq.heappush(hq, -data)
   
   
N = int(sys.stdin.readline().strip())
data_list = [int(sys.stdin.readline().strip()) for _ in range(N)]
solution(N, data_list)

 

728x90