본문 바로가기

Language/Python

[Python][백준 23843][우선순위 큐,정렬] 콘센트 - 컴도리돌이

728x90
 

23843번: 콘센트

광재는 전자기기 대여사업을 시작했다. 퇴근하기 전에 다음날 손님들에게 빌려줄 N개의 전자기기를 충전하려 한다. 사용 가능한 콘센트는 M개가 있고, 성능은 모두 동일하다. 전자기기들은 한

www.acmicpc.net


풀이 과정

1. 입력받은 충전 시간 배열을 내림차순 정렬을 시킨다.

2. 콘센트 배열을 생성시킨다.

3. 내림차순 정렬된 충전 시간을 콘센트 배열에 삽입한다.

   3-1 ) 만약 콘센트 배열의 크기가 주어진 콘센트 개수(m) 보다 작을 경우 -> 콘센트 배열에 해당 time을 삽입

   3-2 ) 만약 콘센트 배열의 크기가 주어진 콘센트 개수(m) 이상일 경우 -> 가장 작은 값 + 현재 time을 더해서 다시 삽입

4. 콘센트 배열에 있는 값 중 가장 큰 값을 출력한다. -> 가장 큰 값 = 시간이 가장 오래 걸린 시간 + 그보다 적은 시간들...


풀이 코드

import sys,heapq; input = sys.stdin.readline
n,m = map(int,input().split())
phone = sorted(list(map(int,input().split())) ,reverse = True)
power_socket = []
for t in phone :
  if len(power_socket) < m : heapq.heappush(power_socket,t) 
  else : heapq.heappush(power_socket,t + heapq.heappop(power_socket))
print(max(power_socket))