[백준/ 파이썬] 11399 ATM

#문제링크

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

 

11399번: ATM

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

www.acmicpc.net

#나의풀이

import sys

if __name__ == '__main__':
    N = int(sys.stdin.readline())
    arr = list(map(int, sys.stdin.readline().split()))
    result = []
    current = 0
    arr.sort()

    for i in range(N):
        current += arr[i]
        result.append(current)

    print(sum(result))

#해설

사람들이 돈을 뽑을때 각자 걸리는 시간을 더해 최소값으로 만드는 문제이다.

각자 걸리는 시간을 최소화 시켜야 한다. 가장 오래 걸리는 시간이 먼저 수행되어 뒷 사람들에 걸린시간에 더해진다면 최소값이 될 수 없다.

오름차순 정렬을 통해 걸리는 시간이 적은 순서대로 만들어주어 각 걸리는 시간을 최소로 만들어주었다.