알고리즘/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
|
n = int(input())
arr = sorted([*map(int,input().split())])
ans = 0
for i in range(n):
ans += sum(arr[:i]) + arr[i]
print(ans)
|
cs |
반응형