- 문제 : https://www.acmicpc.net/problem/14235

 

 

문제 이해

- 문제 설명이 이해하기가 좀 어려웠다. 일단 이해한바로는 n개의 숫자 혹은 숫자 배열이 주어진다.

- 숫자가 0인 경우는 gifts 배열에서 가장 큰 값을 출력하면 되고, 만약 gifts에 숫자가 없다면 -1 을 출력한다. 

- 숫자 배열 a가 주어진 경우라면 a[0]은 배열 a의 마지막 인덱스를 의미하고, a[1] ~ a[a[0]]의 값을 gifts 배열에 추가하면 된다.

- 숫자가 0일 때 gifts에서 가장 큰 값을 출력해야하므로 최대 heap으로 풀어야 하는 문제다. 최대 Heap이니 숫자들의 값에 -1을 곱해서 heappush를 하면 된다. 

 

정답 풀이 

import heapq

n = int(input())
gifts = []

for _ in range(n):
    a = list(map(int, input().split()))
    
    if a[0] == 0:
        if len(gifts) == 0:
            print(-1)
            continue
        else:
            print(-1 * heapq.heappop(gifts))
            
    if a[0] != 0 :
        for i in range(1, len(a)):
            heapq.heappush(gifts, -a[i])

+ Recent posts