코인 변경 문제
const coin_change_bottom_up = (coins, sum) => {
let memo = new Array(sum + 1).fill(Infinity);
memo[0] = 0;
for (let i = 1; i <= sum; i++) {
for (let coin = 0; coin < coins.length; coin++) {
if (coins[coin] <= i) {
memo[i] = Math.min(memo[i], 1 + memo[i - coins[coin]]);
}
}
}
return memo[sum];
// O(n*m)
};
let coins = [1, 5, 10, 25];
let sum = 18;
console.log(coin_change_bottom_up(coins, sum));
//---------------------------------
const coin_change_top_dowm = (coins, sum, memo) => {
if (sum == 0) return 0;
if (sum < 0) return 1e9; // 1e9 = 1,000,000,000
// already solved cases:
let ans = Infinity;
for (let coin = 0; coin < coins.length; coin++) {
if (coins[coin] <= sum) {
let sub_ans = 1 + coin_change_top_dowm(coins, sum - coins[coin], memo);
// console.log(sub_ans);
ans = Math.min(ans, sub_ans);
}
}
memo[sum] = ans;
return memo[sum];
};
let memo = new Array(sum + 1).fill(Infinity);
console.log(coin_change_top_dowm(coins, sum, memo));
Reference
이 문제에 관하여(코인 변경 문제), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/nantipatsoften/coin-change-problem-4fa3텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)