문제

https://www.acmicpc.net/problem/11052

dp[i] 정의

점화식

dp[i] = Math.max(dp[i], dp[i-k] + P[k])

code

const run = (inputs: string[]) => {
  const [num, string] = inputs;
  const totalQuantity = Number(num);
  const numbers = string.split(' ').map(Number);
  // 키드 개수에 따른 최댓값 저장
  const dp = new Array(totalQuantity + 1).fill(0);

  for (let i = 1; i <= totalQuantity; i++) {
    for (let k = 1; k <= i; k++) {
      // i개 샀을 때의 최댓값 계산
      dp[i] = Math.max(dp[i], dp[i - k] + numbers[k - 1]);
    }
  }

  return dp[totalQuantity];
};