티스토리 뷰

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

 

11279번: 최대 힙

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

www.acmicpc.net

 

 

👩‍💻문제 이해

힙 자료구조를 이용해 최대 힙을 구현한다.

파이썬 heapq 모듈은 최소 힙으로 구현되어 있기 때문에 heappush를 할 때 그냥 num이 아닌 (-num, num)으로 구성된 튜플을 이용하게 되면, 튜플의 첫 번째 원소인 -num이 우선순위로 힙이 구성되므로 최대 힙을 구현할 수 있다.

 

 

 

👩‍💻heapq 모듈을 사용해 최대 힙 구현 : 성공🌈

from heapq import heappop, heappush
import sys

n = int(input())
heap = []

for i in range(n):
    num = int(sys.stdin.readline())
    if num != 0:
        heappush(heap,(-num, num))
        
    else:
        try:
            print(heappop(heap)[1])
        except:
            print(0)
댓글
최근에 올라온 글
«   2024/09   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
Total
Today
Yesterday