https://www.acmicpc.net/problem/23843
23843번: 콘센트
광재는 전자기기 대여사업을 시작했다. 퇴근하기 전에 다음날 손님들에게 빌려줄 N개의 전자기기를 충전하려 한다. 사용 가능한 콘센트는 M개가 있고, 성능은 모두 동일하다. 전자기기들은 한
www.acmicpc.net
풀이 과정
- 시간이 오래 걸리는 전자 기기부터 충전시키는 방식으로 진행
- 시간을 계산하기 위해서는 최소 히프를 사용해 준다.
- 히프에 현재 충전중인 전자 기기가 걸리는 시간을 넣어 준다.
- 히프가 가득 차지 않은 경우에는 충전기 자리가 남아있는 것이므로 전자기기의 충전 시간을 그대로 넣어준다.
- 히프가 가득 찬 경우는 충전기가 꽉 찬 경우이므로 기기를 하나 빼준 다음에 넣어주어야 한다. 따라서 히프에서요소 하나를 빼준 후, 해당 요소의 값에 현재 전자기기의 충전 시간을 더해서 다시 히프에 넣어준다.
- 히프 내의 최댓값을 구해서 출력시켜 준다.
- 히프 내의 최댓값이 의미하는 것은 마지막으로 충전이 완료되는 시간이다.
소스 코드
import sys
import heapq
N, M = map(int, input().split())
elec = list(map(int, input().split()))
elec.sort(reverse=True)
heap = []
for e in elec:
if len(heap) < M:
heapq.heappush(heap, e)
else:
outcome = heapq.heappop(heap)
heapq.heappush(heap, outcome + e)
print(max(heap))
'알고리즘[Python] > 백준 알고리즘' 카테고리의 다른 글
[ 9440 ] [ Greedy ] 숫자 더하기 (0) | 2022.01.01 |
---|---|
[ 17951 ] [ 이분 탐색 ] 흩날리는 시험지 속에서 내 평점이 느껴진거야 (0) | 2021.12.30 |
[ 21276 ] [ 위상 정렬 ] 계보 복원가 호석 (0) | 2021.12.28 |
[ 1766 ] [ 위상 정렬 ] 문제집 (0) | 2021.12.27 |
[ 2533 ] [ Tree + DP ] 사회망 서비스(SNS) (0) | 2021.12.24 |