[PS] 99ํด๋ฝ ์ฝํ ์คํฐ๋ 40์ผ์ฐจ TIL (Unique Paths)
ํ๊ทธ: 99ํด๋ฝ, PS, TIL, ๋์ ๊ณํ๋ฒ, ์ฝ๋ฉํ ์คํธ์ค๋น, ํญํด99
์นดํ ๊ณ ๋ฆฌ: PS
![]()
๋ฌธ์

์ค๋ช
๋ก๋ด์ด ๊ฒฉ์ ์ผ์ชฝ ์๋จ๋ถํฐ ์ค๋ฅธ์ชฝ ํ๋จ ๋๊น์ง ์ด๋ํ๋ ๊ฒฝ์ฐ์ ์๋ฅผ ์ฐพ๋ ๋ฌธ์
ํ์ด
- dp ๋ฐฐ์ด ์ ์ : (i,j) ์์ญ์ ๋๋ฌํ๋ ๊ฒฝ๋ก์ ์
- (i,0) / (0,j) ์ค์ ๊ฒฝ์ฐ์ ์๊ฐ ํ๋๋ฟ์ด๋ฏ๋ก ๋ฏธ๋ฆฌ ์ฑ์ ๋๋๋ค.
- ์ ํ์ ๋์ถ : ๋ฌธ์ ์์ ๋ก๋ด์
์ค๋ฅธ์ชฝ๋๋์๋๋ก ๋ฐ์ ์์ง์ด์ง ๋ชปํ๋ค๊ณ ํ์ผ๋ฏ๋ก (i, j) ์์ญ์ ๋๋ฌํ๋ ๊ฒฝ์ฐ์ ์๋ ์ผ์ชฝ์์ ์ค๋ ๊ฒฝ์ฐ์ ์ + ์์์ ์ค๋ ๊ฒฝ์ฐ์ ์๋ก ๋ํ๋ผ ์ ์๋ค.- dp[i][j] = dp[i][j - 1] + dp[i - 1][j]
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
class Solution {
public int uniquePaths(int m, int n) {
int[][] dp = new int[m][n];
// (i, 0) ์ฑ์ฐ๊ธฐ
for (int i = 0; i < m; i++) {
dp[i][0] = 1;
}
// (0, i) ์ฑ์ฐ๊ธฐ
for (int i = 0; i < n; i++) {
dp[0][i] = 1;
}
for (int i = 1; i < m; i++) {
for (int j = 1; j < n; j++) {
dp[i][j] = dp[i][j - 1] + dp[i - 1][j];
}
}
return dp[m - 1][n - 1];
}
}
๋๊ธ๋จ๊ธฐ๊ธฐ