BOJ : 최소 힙[1927]

재현·2021년 4월 25일
0

1. 문제


널리 잘 알려진 자료구조 중 최소 힙이 있다. 최소 힙을 이용하여 다음과 같은 연산을 지원하는 프로그램을 작성하시오.

배열에 자연수 x를 넣는다.
배열에서 가장 작은 값을 출력하고, 그 값을 배열에서 제거한다.
프로그램은 처음에 비어있는 배열에서 시작하게 된다.

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

2. 아이디어


  • heapq
    1. 숫자를 입력받는다.
    2. 숫자가 0이고 힙이 비어있으면 그냥 0을 출력한다.
    3. 그게 아니라 숫자가 0이기만 하면(힙은 비어있지 않음) 12번째 줄 heapq.heappop(min_heap)을 통해 최소 힙을 제거하면서 출력한다.
    4. 2,3에 해당 사항이 없다면 입력값을 heappush해준다.

3. 코드


mine

import sys
import heapq

input = lambda: sys.stdin.readline()
n = int(input())
min_heap = []
for i in range(n):
  number = int(input())
  if number == 0 and not min_heap:
    print(0)
  elif number == 0:
    print(heapq.heappop(min_heap))
  else:
    heapq.heappush(min_heap, number)
profile
성장형 프로그래머

0개의 댓글