백준 11399 - ATM (Python3)
코드
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이라고 작성하여 실수를 범할 수도 있으니 주의하자.
댓글남기기