λ¬Έμ
νμ΄ κ³Όμ
μμ μ μ n
μ λν΄μ μ΅μ κ°μμ μμ μ κ³±μλ‘ νννλ λ°©λ²μ μ°Ύλ λ¬Έμ μ
λλ€.
μλ₯Ό λ€μ΄ 12
λ 2
μ μ κ³±μΈ 4
λ₯Ό 3λ² λν΄μ λ§λ€ μ μμ΅λλ€.
λ§μ½ ꡬνκ³ μ νλ μ n
μ μ΄μ©ν΄μ dp(n) = nμ μμ μ κ³±μλ‘ νννκΈ° μν μ΅μ κ°μ
λΌκ³ νλ€λ©΄
λ€μκ³Ό κ°μ μ νμμ μΈμΈ μ μμ΅λλ€.
dp(n) = min(dp(n-X)+1), μ΄λ X λ nμ λκΈ°μ§ μλ μΌμ μ κ³± μ
μλ₯Ό λ€μ΄ `dp(13)` μ 9λ₯Ό μμ μ κ³±μλ‘ 1κ° μ ννκ³ `dp(13-9) + 1 = dp(4) + 1` κ³Ό κ°μ΄ ννν μ μλ κ²μ λλ€.
λ°λΌμ μμ κ°μ΄ μ νμμ μΈμμ£Όλ©΄ `λμ κ³νλ²` μΌλ‘ λ¬Έμ λ₯Ό ν΄κ²°ν μ μμ΅λλ€.
μ½λ
/**
* @param {number} n
* @return {number}
*/
var numSquares = function (n) {
const dp = new Array(n + 1).fill(Infinity);
dp[0] = 0;
for (let i = 1; i <= n; i++) {
let p = 1;
while (p ** 2 <= i) {
dp[i] = Math.min(dp[i], dp[i - p ** 2] + 1);
p += 1;
}
}
return dp[n];
};
λ°μν
'π algorithm > leetcode' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
LeetCode 406 - Queue Reconstruction by Height (Medium) (0) | 2021.03.03 |
---|---|
LeetCode 54 - Spiral Matrix (Medium) (0) | 2021.03.03 |
LeetCode 94 - Binary Tree Inorder Traversal (Medium) (0) | 2021.03.03 |
LeetCode 394 - Decode String (Medium) (0) | 2021.03.03 |
LeetCode 78 - Subsets (Medium) (0) | 2021.03.03 |
π¬ λκΈ