본문 바로가기
Problem Solving/백준

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

by JC_ 2023. 4. 22.
 

1927번: 최소 힙

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

www.acmicpc.net

  • 단순하게 heap과 heap메서드를 이용하여 구현
#######################################################
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:                 # list에 원소가 없을 경우
            print(0)                    # 그냥 0 출력
        else:                           # list에 원소가 있다면
            print(heapq.heappop(l))     # heapq.heappop(l) 메서드를 이용하면 자동으로 
                                        # 최소값을 출력하고 제거 해준다.
    else:                               # input이 0이 아닌경우
        heapq.heappush(l, inp)          # heapq.heappush(l, inp) 메서드를 이용하여 
                                        # 최소값이 가장 앞으로 정렬된 상태로 삽입 해준다.

댓글