티스토리 뷰

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 - 본인의 번째 수)를 모두 더한 것이 총 걸리는 시간이 된다.

따라서, 초반에 인출하는 사람의 시간이 가작 적어야 한다.

따라서 오름차순 정렬 후에 위의 식을 이용해 값을 도출한다.

 

다른사람들도 다 비슷하게 푼 것 같다.

반응형
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/02   »
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28
글 보관함