알고리즘/BOJ

[BOJ 11399, Python 3] ATM

70825 2021. 8. 2. 13:08
반응형

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

 

11399번: ATM

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

www.acmicpc.net

 

풀이

더하는 방법이 (이전까지의 사람들이 돈을 인출하는데 걸린 시간의 합) + (현재 뽑고 있는 사람이 돈을 인출하는데 걸리는 시간)으로 나눌 수 있습니다.

 

(현재 뽑고 있는 사람이 돈을 인출하는데 걸리는 시간)은 값은 입력값으로 주어지는 것이라서 값이 고정되어 있는데, (이전까지의 사람들이 돈을 인출하는데 걸린 시간의 합)은 배치에 따라 값이 달라질 수 있습니다.

 

그래서 (이전까지의 사람들이 돈을 인출하는데 걸린 시간의 합) 값을 최소화하려면 오름차순으로 정렬을 해주면 되겠네요.

 

코드

1
2
3
4
5
6
7
= int(input())
arr = sorted([*map(int,input().split())])
 
ans = 0
for i in range(n):
    ans += sum(arr[:i]) + arr[i]
print(ans)
cs
반응형