
<문제>
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 |