코드

n = int(input())

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

d = [0] * (n+1)

d[1] = waiting[0]

for i in range(2, n+1):
    d[i] = d[i-1] + waiting[i-1]
    
print(sum(d))

문제 해설

동적 프로그래밍 참고

간단한 DP 문제이다. 누적 합의 최솟값을 구하라는 문제이므로 이전 값들이 다음 값에 영향을 주기 때문에 DP라고 파악한 후, 점화식 또한 간단하게 구해져 쉽게 해결할 수 있는 문제. 단, d[1]의 값을 단순하게 1이라고 작성하여 실수를 범할 수도 있으니 주의하자.

댓글남기기