- 문제 : 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])
'백준 > Greedy' 카테고리의 다른 글
[heap/백준] 2075번 : N번째 큰 수 (0) | 2023.07.21 |
---|---|
[heap/백준] 1417번 : 국회의원 선거 (0) | 2023.07.18 |
[그리디/백준] 14247번 : 나무 자르기 (0) | 2023.05.08 |
[그리디/백준] 2405번 : 세 수, 두 M (0) | 2023.05.08 |
[그리디/백준] 2812번 : 크게 만들기 (0) | 2022.07.17 |