[Python] 백준 알고리즘 1927번 - 최소 힙

2022. 3. 3. 23:55알고리즘/문제풀이

[Python] 백준 알고리즘 2407번 - 조합

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

 

1927번: 최소 힙

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

www.acmicpc.net

 접근 방식

 파이썬에서 구현이 되어있는 heap 자료구조를 사용하여 문제 코드를 작성하였다. 

 

이번 문제의 경우 구현되어 있는 힙에 숫자를 넣고 빼며 진행이 되는 코드들이다. 

0이 들어오면 문제에서 힙에 들어가 있는 가장 작은 수를 출력하면서 빼내는 문제이다.

따라서 0이 들어갔을 때 0만 존재한다면 0이 나오는 경우가 존재한다.

 

주어진 예제를 통해 그러한 부분을 알 수 있다.

 

 

 

 구현 코드

import heapq
import sys

heap = []

n = int(input())

for _ in range(n):
    x = int(sys.stdin.readline())
    if x == 0:
        try:
            print(heapq.heappop(heap))
        except:
            print(0)

    else:
        heapq.heappush(heap, x)

 

 

 

 보충할 점

  • import sys  
  • sys.stdin.readline() 과 input()의 시간 차이
  • heap 자료구조의 개념 정리
  • try catch , except 문의 개념 및 활용 정리