λ¬Έμ
νμ΄ κ³Όμ
μ΄λ λ°©ν₯μ΄ κ³ μ λμ΄ μλ μνμμ λͺ©ν μ§μ μ λλ¬νκΈ° μν μ΅μ λΉμ©μ μ°Ύλ λ¬Έμ μ
λλ€.
κ° μΉΈμ νλμ μ μ μΌλ‘ μκ°νλ©΄ μ΄λ λ°©ν₯μ΄ μ€λ₯Έμͺ½ νΉμ μλλ‘ κ³ μ λμ΄ μμΌλ―λ‘ μ΄λ₯Ό κ·Έλνλ‘ λͺ¨λΈλ§νμ¬
λ€μ΅μ€νΈλΌ μκ³ λ¦¬μ¦μ΄λ νλ‘μ΄λμ κ°μ μ΅λ¨ κ²½λ‘ μκ³ λ¦¬μ¦μ μ¬μ©ν μλ μμ κ² κ°μ΅λλ€.
νμ§λ§ κ·Έλ³΄λ€ κ°λ¨νκ² λμ κ³νλ²
μ νμ©νμ¬ λ¬Έμ λ₯Ό ν΄κ²°ν μ μμ΅λλ€.
λ§μ½ dp(x, y) = (x, y)μμ μΆλ°ν΄μ (m, n)μ λλ¬ ν μ μλ μ΅λ¨κ²½λ‘
λΌκ³ μ μνλ€λ©΄
λ€μκ³Ό κ°μ μ νμμ μΈμΈ μ μμ΅λλ€.
dp(x, y) = min(dp(x+1, y), dp(x, y+1)) + cost(x, y), μ΄λ costλ νμ¬ (x, y) μμ νμν λΉμ©
νμ Javascriptλ‘ Node.jsλ Vue.js κ°λ°ν λ μΌμ°¨μ λ°°μ΄μ μ£Όλ‘ μ¬μ©νμλλ°
μ΄λ² λ¬Έμ λ₯Ό ν΅ν΄μ Javascript μμ λ€μ°¨μ λ°°μ΄μ μμ±νκ³ μ΄κΈ°ννλ λ°©λ²μ μ΅ν μ μμμ΅λλ€.
μ½λ
/**
* @param {number[][]} grid
* @return {number}
*/
var minPathSum = function (grid) {
const M = grid.length;
const N = grid[0].length;
const memo = new Array(M).fill(0).map((_) => new Array(N).fill(-1));
const INF = Number.MAX_SAFE_INTEGER;
const dp = function (x, y) {
// λ²μλ₯Ό λ²μλλ€λ©΄
if (x < 0 || x >= M || y < 0 || y >= N) {
return INF;
}
// λͺ©ν μ§μ μ λλ¬νλ€λ©΄
else if (x === M - 1 && y === N - 1) {
return grid[x][y];
}
if (memo[x][y] !== -1) {
return memo[x][y];
}
memo[x][y] = Math.min(dp(x + 1, y), dp(x, y + 1)) + grid[x][y];
return memo[x][y];
};
const a = dp(0, 0);
return a;
};
const grid = [
[1, 3, 1],
[1, 5, 1],
[4, 2, 1],
];
console.log(minPathSum(grid));
Javascript λ€μ°¨μ λ°°μ΄ μμ± μ°Έκ³ μλ£
'π algorithm > leetcode' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
LeetCode 49 - Group Anagrams (Medium) (0) | 2021.03.02 |
---|---|
LeetCode 200 - Number of Islands (Medium) (0) | 2021.03.02 |
LeetCode 55 - Jump Game (Medium) (0) | 2021.03.02 |
LeetCode 70 - Climing Stairs (Easy) (0) | 2021.03.02 |
LeetCode 1 - Two Sum (Easy) (0) | 2021.03.02 |
π¬ λκΈ