λ¬Έμ
νμ΄ κ³Όμ
νμ¬ μμΉμμ μμ§μΌ μ μλ κ±°λ¦¬κ° μ£Όμ΄μ Έμκ³ , μ΄λ₯Ό ν΅ν΄ λ§μ§λ§ μμΉ λλ¬ κ°λ₯μ±μ νλ¨νλ λμ κ³νλ²
λ¬Έμ μ
λλ€.
λ°λΌμ dp(x) = xμμ λ§μ§λ§ indexμ λλ¬ κ°λ₯νμ§ μ¬λΆ
λΌκ³ μ μνλ€λ©΄ λ€μκ³Ό κ°μ μ νμμ μ»μ μ μμ΅λλ€.
dp(x) = at least one for all dp(x + jump) , μ΄λ jumpλ xμμ μ ν κ°λ₯ν 거리
μ¦, νμ¬ μμΉμμ λλ¬ κ°λ₯ν μμΉ μ€ μ΄λ νλλΌλ λ§μ§λ§ μμΉμ λλ¬νλ κ²½λ‘λ₯Ό κ°μ§κ³ μλ€λ©΄
νμ¬ μμΉμμλ λ§μ§λ§μ λλ¬ν μ μλ κ²μ
λλ€.
Javascript
μμλ ν¨μν νλ‘κ·Έλλ° κΈ°λ²μ κΈ°λ°ν λ©λͺ¨μ΄μ μ΄μ
ν¨ν΄μ΄ μμ΅λλ€.
μ΄λ² λ¬Έμ μμλ ν΄λ‘μ
λ₯Ό νμ©ν΄μ Top-down λ°©μμ λ©λͺ¨μ΄μ μ΄μ
μ ꡬνν΄λ΄€μ΅λλ€.
λ€λ₯Έ μ¬λλ€μ νμ΄λ₯Ό 보λ 미리 κ³ μ λ Array
λ₯Ό μ¬μ©νκ±°λ Map
μλ£κ΅¬μ‘°λ₯Ό νμ©νλ λ°©λ²λ μ μλκ³ μλλ°
κ·Έμ€ κ°μ₯ μΌλ°μ μΌλ‘ μ¬μ©νλ λ°©μ(Object μ¬μ©)μ μ μ©νμ΅λλ€.
μ½λ
/**
* @param {number[]} nums
* @return {boolean}
*/
var canJump = function (nums) {
let cache = {};
const dp = function (x) {
if (x >= nums.length) {
return 0;
} else if (x === nums.length - 1) {
return 1;
}
if (x in cache) {
return cache[x];
}
cache[x] = false;
for (let jump = 1; jump <= nums[x]; jump++) {
cache[x] |= dp(x + jump) ? 1 : 0;
}
return cache[x];
};
return dp(0);
};
const nums = [2, 0];
console.log(canJump(nums));
Javascript λ©λͺ¨μ΄μ μ΄μ μ°Έκ³ μλ£
'π algorithm > leetcode' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
LeetCode 49 - Group Anagrams (Medium) (0) | 2021.03.02 |
---|---|
LeetCode 200 - Number of Islands (Medium) (0) | 2021.03.02 |
LeetCode 64 - Minimum Path Sum (Medium) (0) | 2021.03.02 |
LeetCode 70 - Climing Stairs (Easy) (0) | 2021.03.02 |
LeetCode 1 - Two Sum (Easy) (0) | 2021.03.02 |
π¬ λκΈ