<문제>

https://www.acmicpc.net/problem/14235

 

 

<풀이>

import sys
import heapq

input = sys.stdin.readline
N = int(input())
heap = []

for _ in range(N):
    cmd = list(map(int, input().split()))
    
    if cmd[0] != 0:
        for i in range(cmd[0]):
            heapq.heappush(heap, -cmd[i+1])
    else:
        if len(heap) == 0:
            print(-1)
        else:
            present = -heapq.heappop(heap)
            print(present)

 

- 가장 가치가 큰 선물을 뽑아줘야 하므로 최대 힙 문제

- 첫째 자리가 0이면 선물을 나눠주고 0이 아니면 충전

- 충전할 때 힙 push

- 선물 줄 때 힙 pop

- 선물 주머니가 비어있을 때는 -1

'TIL > [파이썬] 1일 1코테' 카테고리의 다른 글

회전초밥_백준28107  (0) 2025.02.15
절댓값 힙_백준11286  (0) 2025.02.13
RelativeRanks_LeetCode  (0) 2025.02.11
더 맵게_프로그래머스  (1) 2025.02.10
균형잡힌 세상_백준4949  (0) 2025.02.08

+ Recent posts