sm 기술 블로그

148. 11399(ATM) - 파이썬 본문

문제/백준_파이썬

148. 11399(ATM) - 파이썬

sm_hope 2022. 7. 18. 17:32
import sys
input = sys.stdin.readline

N = int(input())
P = sorted(list(map(int, input().split())))

tmp = 0

for i in range(N):
  tmp += P[i]
  P[i] = tmp

print(sum(P))

문제요약

N명의 사람이 ATM에서 돈을 뽑을 때 가장 적게 드는 방법은?

설명

각 사람이 P시간이 걸린다.

시간을 오름차순으로 정렬하면 필요한 시간의 합의 최소값을 구할 수 있다.

 

P = sorted(list(map(int, input().split())))

따라서 먼저 받은 값을 오름차순으로 정렬한다.

 

for i in range(N):
  tmp += P[i]
  P[i] = tmp

누적합을 저장해준다.

 

print(sum(P))

배열의 모든 값을 더해주면 답을 구할 수 있다.

Comments