인하은행에는 ATM이 1대밖에 없다. 지금 이 ATM앞에 N명의 사람들이 줄을 서있다. 사람은 1번부터 N번까지 번호가 매겨져 있으며, i번 사람이 돈을 인출하는데 걸리는 시간은 Pi분이다. 줄을 [2, 5, 1, 4, 3] 순서로 줄을 서면, 2번 사람은 1분만에, 5번 사람은 1+2 = 3분, 1번 사람은 1+2+3 = 6분, 4번 사람은 1+2+3+3 = 9분, 3번 사람은 1+2+3+3+4 = 13분이 걸리게 된다. 각 사람이 돈을 인출하는데 필요한 시간의 합은 1+3+6+9+13 = 32분이다. 이 방법보다 더 필요한 시간의 합을 최소로 만들 수는 없다.
줄을 서 있는 사람의 수 N과 각 사람이 돈을 인출하는데 걸리는 시간 Pi가 주어졌을 때, 각 사람이 돈을 인출하는데 필요한 시간의 합의 최솟값을 구하는 프로그램을 작성하시오.
뒤에 서있는 사람은 앞 사람의 모든 소요 시간을 더하게 된다. 그러므로 소요시간이 긴 사람이 뒤에 서있어야 최소 시간을 구할 수 있다.
2번째 사람은 1번째 사람의 시간 + 2번째 사람의 시간만큼 기다리고 3번째 사람은 1+2+3번째 사람의 시간을 기다린다.
즉, 2중 반복문으로 i, j를 이용하여 이들의 합을 구한다.
import sys
input = sys.stdin.readline
n = int(input()) #총 몇 명
time_list = list(map(int,input().split())) #시간 리스트
time_list.sort() #오름차순 정렬
cnt = 0
for i in range(n): #n까지 순서대로
for j in range(i+1): #이전 사람들의 시간과 본인(i)의 시간 합
cnt += time_list[j]
print(cnt)
.sort()를 .sort라고 적고 런타임에러 5번 봤다★,°:.☆( ̄▽ ̄)/$:.°★ 。이런 실수... 적당히 하자 젭알