728x90
문제
link: https://www.acmicpc.net/problem/11399
N명의 사람이 한 줄로 서서 ATM을 이용한다고 할 때, 돈을 인출하는 데 걸리는 시간 합의 최솟값을 계산하는 문제이다.
접근
한 사람이 ATM을 이용하고 있으면 그 시간동안 다음 사람들은 당연히 대기하게 된다. 시간이 적게 걸리는 순으로 돈을 인출하는 경우에 시간 합이 최솟값이 되므로 시간 순으로 정렬하여 계산했다.
첫 번째 사람이 돈을 인출하는 시간은 모든 사람이 함께 소모한다. 하지만 마지막 사람이 돈을 인출하는 시간은 마지막 사람 혼자만 소모한다. 따라서 첫 번째 사람의 시간 P1에는 *N, ..., 마지막 사람의 시간 Pn에는 *1한 후 모두 더해 주었다.
코드
N = int(input())
P = sorted(map(int, input().split()), reverse=1)
print(sum((i+1)*p for i, p in enumerate(P)))
728x90
'코딩테스트' 카테고리의 다른 글
[백준] 1003 | 피보나치 함수 [파이썬/python] (0) | 2025.04.02 |
---|---|
[백준] 17219 | 비밀번호 찾기 [파이썬/python] (0) | 2025.04.02 |
[백준] 1874 | 스택 수열 [파이썬/python] (0) | 2025.04.02 |
[백준] 1966 | 프린터 큐 [파이썬/python] (0) | 2025.04.02 |
[백준] 11723 | 집합 [파이썬/python] (0) | 2025.04.02 |