본문 바로가기

알고리즘/백준

[BOJ] [Python] 11399번 : ATM

문제 예시, 시간 짧은 순으로 작성

 

시간이 짧은 순으로 처리해서 더하면, 최소 합이 된다.

 

 

2가지 방법으로 풀 수 있다.

 

 

1. 가로 

tmp에 자기 차례까지 걸리는 시간을 저장한다.

result는 각각 자기 차례까지 걸리는 시간의 총합을 저장한다.

 

num = int(input())
li = list(map(int, input().split()))
li.sort()

tmp = li[0]
result = 0

for i in range(len(li) - 1):
    tmp += li[i + 1]
    result += tmp

print(result + li[0])

 

 

 

2. 세로

인출 시간이 짧을수록 많이 더해지는 점을 이용한다.

 

num = int(input())

li = list(map(int, input().split()))
li.sort(reverse = True)

result = 0

for i in range(1, num + 1):
    result += i * li[i - 1]

print(result)