๋ฌธ์
ํ์ด ๊ณผ์
์ ํ์ ์ธ ๋์ ๊ณํ๋ฒ
์ ํ์ฉํ ๊ฒฝ๋ก ์ฐพ๊ธฐ ๋ฌธ์ ์
๋๋ค.
์์ ์ง์ ์์ ์ด๋ํ ์ ์๋ ๋ฐฉํฅ์ด ์ค๋ฅธ์ชฝ๊ณผ ์๋์ชฝ์ผ๋ก ๊ณ ์ ๋์ด ์๊ธฐ ๋๋ฌธ์dp(x, y) = (x, y) ์ง์ ์์ finish์ ๋๋ฌํ๋ ๊ฒฝ๋ก์ ๊ฐ์
๋ผ๊ณ ์ ์ํ๋ค๋ฉด
๋ค์๊ณผ ๊ฐ์ ์ ํ์์ ์ธ์ธ ์ ์์ต๋๋ค.
dp(x, y) = dp(x+1, y) + dp(x, y+1)
์ด๋ ๊ฒฉ์๋ฅผ ๋ฒ์ด๋๊ฑฐ๋ finish
์ง์ ์ ๋์ฐฉํ๋ ๊ธฐ์ ์ฌ๋ก๋ฅผ ์ฒ๋ฆฌํด์ค๋ค๋ฉด ์ฝ๊ฒ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์ ์์ต๋๋ค.
์ฝ๋
/**
* @param {number} m
* @param {number} n
* @return {number}
*/
var uniquePaths = function (m, n) {
const memo = new Array(m).fill(null).map((_) => new Array(n).fill(-1));
function dp(x, y) {
if (x === m - 1 && y === n - 1) {
return 1;
} else if (x < 0 || x >= m || y < 0 || y >= n) {
return 0;
}
if (memo[x][y] !== -1) {
return memo[x][y];
}
memo[x][y] = dp(x + 1, y) + dp(x, y + 1);
return memo[x][y];
}
return (ret = dp(0, 0));
};
๋ฐ์ํ
'๐ algorithm > leetcode' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
LeetCode 198 - House Robber (Easy) (0) | 2021.03.02 |
---|---|
LeetCode 22 - Generate Parentheses (Medium) (0) | 2021.03.02 |
LeetCode 121 - Best Time to Buy and Sell Stock (Easy) (0) | 2021.03.02 |
LeetCode 101 - Symmetric Tree (Easy) (0) | 2021.03.02 |
LeetCode 876 - Middle of the Linked List (Easy) (0) | 2021.03.02 |
๐ฌ ๋๊ธ