알고리즘/Baekjoon
[CodingTest] 백준 #11399 ATM
Happyoon ~
2022. 1. 16. 03:55
728x90
반응형
https://www.acmicpc.net/problem/11399
11399번: ATM
첫째 줄에 사람의 수 N(1 ≤ N ≤ 1,000)이 주어진다. 둘째 줄에는 각 사람이 돈을 인출하는데 걸리는 시간 Pi가 주어진다. (1 ≤ Pi ≤ 1,000)
www.acmicpc.net
나의 풀이
n = int(input())
P = sorted(map(int,input().split()))
sum = 0
for i in range(n):
sum += P[i]*(n-i)
print(sum)
만약 3, 1, 4, 3, 2 이고 이 순서대로 돈을 인출한다면
1번째 사람이 인출하는 데에 걸리는 시간: 3
2번째 사람이 인출하는 데에 걸리는 시간: 3 1
3번째 사람이 인출하는 데에 걸리는 시간: 3 1 4
4번째 사람이 인출하는 데에 걸리는 시간: 3 1 4 3
5번째 사람이 인출하는 데에 걸리는 시간: 3 1 4 3 2
와 같으므로, 본인이 걸리는 시간 * (5 - 본인의 번째 수)를 모두 더한 것이 총 걸리는 시간이 된다.
따라서, 초반에 인출하는 사람의 시간이 가작 적어야 한다.
따라서 오름차순 정렬 후에 위의 식을 이용해 값을 도출한다.
다른사람들도 다 비슷하게 푼 것 같다.
반응형