백준 | 최소 힙

jeonghens·2024년 7월 30일

알고리즘: BOJ

목록 보기
65/125

최소 힙 문제


최소 힙(Min Heap)이라는 자료 구조를 이용하여, 아래의 두 연산을 지원하는 프로그램을 만들어야 한다.

[1] 배열에 자연수 x(231보다 작은 자연수 또는 0)를 넣는다.
[2] 배열에서 가장 작은 값을 출력하고, 그 값을 배열에서 제거한다.


이때 x가 자연수면 배열에 x를 추가하고, x가 0이면 배열에서 가장 작은 값을 출력하고 배열에서 그 값을 제거해야 한다.


파이썬의 heapq 라이브러리를 사용하여 문제를 해결할 수 있다.


코드(정답)는 다음과 같다.

import sys
import heapq


n = int(sys.stdin.readline())

min_heap = []
for _ in range(n):
    x = int(sys.stdin.readline())

    if x == 0:
        if min_heap:
            print(heapq.heappop(min_heap))
        else:
            print(0)
    else:
        heapq.heappush(min_heap, x)
profile
알고리즘이나 SQL 문제 풀이를 올리고 있습니다. 피드백 환영합니다!

0개의 댓글