[파이썬 알고리즘 문제풀이] - Section5 / 자료구조 활용(힙) -10

Chooooo·2023년 2월 1일
0

🎈 최소힙

최소힙은 완전이진트리로 구현된 자료구조입니다. 그 구성은 부모 노드값이 왼쪽자식과 오른쪽 자식노드의 값보다 작게 트리를 구성하는 것입니다. 그렇게 하면 트리의 루트(root)노드는 입력된 값들 중 가장 작은 값이 저장되어 있습니다. 예를 들어 5 3 2 1 4 6 7순으로 입력되면 최소힙 트리는 아래와 같이 구성됩니다.

최소힙 자료를 이용하여 다음과 같은 연산을 하는 프로그램을 작성하세요.
1) 자연수가 입력되면 최소힙에 입력한다.
2) 숫자 0 이 입력되면 최소힙에서 최솟값을 꺼내어 출력한다.
(출력할 자료가 없으면 -1를 출력한다.)
3) -1이 입력되면 프로그램 종료한다.

▣ 입력설명
첫 번째 줄부터 숫자가 입력된다. 입력되는 숫자는 100,000개 이하이며 각 숫자의 크기는 정수형 범위에 있다.

▣ 출력설명
2) 연산을 한 결과를 보여준다.

▣ 입력예제 1
5
3
6
0
5
0
2
4
0
-1

▣ 출력예제 1
3
5
2

import sys
from collections import deque
import heapq as hq
sys.stdin = open("input.text", "rt")
# input = sys.stdin.readline

data = []
while True:
    n = int(input())
    if n == -1:
        break
    if n == 0:
        if len(data) == 0: #최소힙 자료구조 비어있음
            print(-1)
        else:
            print(hq.heappop(data))
    else:
        hq.heappush(data, n) #최소힙의 형태로 삽입

🎈 코멘트
파이썬에서 제공하는 heappush()와 heappop()을 사용하면 리스트가 힙의 자료구조처럼 조작이 된다.
물론 import heapq as hq처럼 라이브러리를 선언해야 한다.
as hq는 별칭으로 좀더 짧게 쓰기 위해 선언했다.

profile
back-end, 지속 성장 가능한 개발자를 향하여

0개의 댓글