본문 바로가기
Programming/알고리즘

[백준 / Python] 1927번 최소 힙

by castberry_ 2024. 2. 13.
반응형

문제

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

 

1927번: 최소 힙

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

www.acmicpc.net

 


소스코드

import heapq
import sys
# 최소힙 문제 
# heapq.heappush(heap, item) : item을 heap에 추가
# heapq.heappop(heap) : heap에서 가장 작은 원소를 pop & 리턴. 비어 있는 경우 IndexError가 호출됨. 
# heapq.heapify(x) : 리스트 x를 즉각적으로 heap으로 변환함 
N = int(input())
ls = []

for i in range(N):
    
    a = int(sys.stdin.readline())
    if a == 0:
        if ls:
        	print( heapq.heappop(ls))
            
        else:
            print(0)
            
    else:
        heapq.heappush(ls, a)

 

우선순위 큐 문제입니다.

힙큐 알고리즘이 구현되어있는 파이썬의 heapq를 사용한다면 쉽게 풀 수 있습니다. 

 

힙큐의 시간 복잡도는 삽입, 삭제가 O(logN)을 가집니다. 

반응형

댓글