코딩테스트

[백준] 11399 | ATM [파이썬/python]

사용할수없는닉네임이왜이렇게많지ㅠㅠ 2025. 4. 2. 20:13
728x90

문제

link: https://www.acmicpc.net/problem/11399

N명의 사람이 한 줄로 서서 ATM을 이용한다고 할 때, 돈을 인출하는 데 걸리는 시간 합의 최솟값을 계산하는 문제이다.

 

접근

한 사람이 ATM을 이용하고 있으면 그 시간동안 다음 사람들은 당연히 대기하게 된다. 시간이 적게 걸리는 순으로 돈을 인출하는 경우에 시간 합이 최솟값이 되므로 시간 순으로 정렬하여 계산했다.

첫 번째 사람이 돈을 인출하는 시간은 모든 사람이 함께 소모한다. 하지만 마지막 사람이 돈을 인출하는 시간은 마지막 사람 혼자만 소모한다. 따라서 첫 번째 사람의 시간 P1에는 *N, ..., 마지막 사람의 시간 Pn에는 *1한 후 모두 더해 주었다.

 

코드

N = int(input())
P = sorted(map(int, input().split()), reverse=1)

print(sum((i+1)*p for i, p in enumerate(P)))
728x90