<문제>

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

 

 

<풀이>

import sys
import heapq
N, M, K = list(map(int, sys.stdin.readline().split()))
deq = []
satisfaction = []

for _ in range(N):
    n = -int(sys.stdin.readline().strip())
    heapq.heappush(deq, n)

while -deq[0] > K:
    job = -heapq.heappop(deq)
    today_s = satisfaction[-1] // 2 + job if satisfaction else job
    satisfaction.append(today_s)
    heapq.heappush(deq, -(job - M))

print(len(satisfaction))
for s in satisfaction:
    print(s)

 

- 가장 큰 일을 구해야 하니 최대힙 사용

- 가장 큰 일을 pop하고 계산 후 다시 넣기, 반복

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

개미_백준3048  (0) 2025.02.20
세준세비_백준1524  (0) 2025.02.19
[정렬] 좌표압축_백준18870  (0) 2025.02.18
[정렬] H-Index_프로그래머스  (0) 2025.02.17
파일 정리_백준20291  (0) 2025.02.17

+ Recent posts