본문 바로가기
BEB/algorithm

37_coinChange

by ddanss 2022. 12. 15.
728x90
const coinChange = function (total, coins) {
  let dp = Array.from({length:10002}).fill(0);
  dp[0] = 1;
  for(let i=0;i<coins.length;i++) {
    for(let j = coins[i]; j<= total; j++) {
      dp[j] += dp[j-coins[i]];
    }
  }
  return dp[total];
}

 

값을직접 대입해보았다.
10, [1,2,5]

for i=1일떄

dp[2] += dp[2-2]; --  2로 2를 만들 수 있는 경우의 수가 있으니 더해준다

dp[3] += dp[3-2]; --  3을 만들때는 2와 dp[1](1을만들 수 있는 경우의 수) 가 필요한 것이니 1을 만들 수 있는 경우의 수를 더해준다

dp[4] += dp[4-2]; -- 4를 만들떄는 2와 dp[2](2를 만들 수 있는 경우의 수) 가 필요한 것이니 2를 만들 수 있는 경우의 수를 더해준다

 

for i=2일떄

dp[5] += dp[5-5]; -- 5로 5를 만들 수 있는 경우의 수는 있으니 더해준다

dp[6] += dp[6-5]; --  6을 만들때는 5와 dp[1](1을 만들 수 있는 경우의 수)가 필요한 것이니 1을 만들 수 있는 경우의 수를 더해준다

dp[7] += dp[7-5]; -- 7을 만들때는 5와 dp[2](2를 만들 수 있는 경우의 수)가 필요한 것이니 2를 만들 수 있는 경우의 수를 더해준다

반응형

댓글