본문 바로가기
Problem Solving/백준

백준 최대 힙 - 11279 [파이썬, 자료 구조, 우선순위 큐]

by JC_ 2023. 4. 22.
 

11279번: 최대 힙

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

www.acmicpc.net

  • heap은 자동으로 최소값이 앞에 오도록 정렬해준다. 따라서 자연수라면 input 앞에 -(n)를 붙이고 출력시 다시 -(-(n)) 을 해주어 최대힙을 구현할 수 있다.
#######################################################
import sys
import heapq
#######################################################
n = int(sys.stdin.readline())
l = []

for i in range(n):
    inp = int(sys.stdin.readline())
    if inp == 0:                        # input 이 0 이면
        if len(l) == 0:                 # l에 원소가 없으면
            print(0)                    # 0 출력
        else:                           # l에 원소가 있으면
            print(-(heapq.heappop(l)))  # heappop 사용하면서 -를 다시 제거해준다.
    else:                               # input 이 0 이 아니면
        heapq.heappush(l, -(inp))       # input 에 - 를 붙여서 삽입해준다.

 

댓글