문제

Baekjoon1927: 최소 힙

  • 설명: 적당한 값이 입력되고 가장 작은 값을 출력해야할 때 작은 값을 출력하라

풀이

  • 간단히 Python의 heap을 이용하면 되는 문제이다.
  • queue 모듈의 PriorityQueue를 활용했다.

회고

  • 오늘의 회고는 아니지만 어제의 관련 문제를 얘기하자면
  • [<type>] * n<type>을 얕은 복사를 한다.
    • 따라서 $1 \times N$ 배열 생성할 때 a = [[]] * n의 문법은 단순히 레퍼런스를 복사하기 때문에
    • a[0].append(1)[[1],[1],[1], ... [1]]의 결과를 야기한다.
    • 각 열이 독립적인 것이 아니라 같은 객체를 가르킨다는 뜻!
  • 각 행마다 모두 다른 값을 입력하고 싶다면 list comprehension이나 직접 for문을 사용하여 객체를 새로 생성해야한다.
  • 이는 PriorityQueue도 마찬가지이다!

Code

# Baekjoon01927.py
import sys
input = sys.stdin.readline

from queue import PriorityQueue

n = int(input())

pq = PriorityQueue()

for _ in range(n):
    num = int(input())

    if num == 0:
        print((pq.get() if pq.qsize() else 0))
    else:
        pq.put(num)

필수 해시태그: # # # # #

+ Recent posts