본문 바로가기
백준

[백준] 11399 ATM - Python

by whereisco 2023. 5. 24.

문제

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

 

11399번: ATM

첫째 줄에 사람의 수 N(1 ≤ N ≤ 1,000)이 주어진다. 둘째 줄에는 각 사람이 돈을 인출하는데 걸리는 시간 Pi가 주어진다. (1 ≤ Pi ≤ 1,000)

www.acmicpc.net

위 문제는 각 사람이 돈을 인출하는데 필요한 시간의 합의 최솟값을 구해주어야 합니다.

이는 곧 각 사람의 (대기 시간 + 인출 시간)이 짧아야 함을 의미합니다.

따라서 인출 시간이 짧은 사람들이 순차적으로 나열되도록 오름차순 정렬해줍니다.

이 후, 각 사람이 돈을 인출하는데 걸리는 시간과 대기시간을 더해줌으로써 각 사람이 돈을 인출하는데 필요한 시간의 합의 최솟값을 구해줄 수 있습니다.

Python

#ATM
n = int(input())
times = list(map(int, input().split()))
times.sort()
for i in range(1, len(times)):
    times[i] = times[i-1] + times[i]
print(sum(times))