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

์ค๋ช
๋ก๋ด์ด ๊ฒฉ์ ์ผ์ชฝ ์๋จ๋ถํฐ ์ค๋ฅธ์ชฝ ํ๋จ ๋๊น์ง ์ด๋ํ๋ ๊ฒฝ์ฐ์ ์๋ฅผ ์ฐพ๋ ๋ฌธ์ . ์ด์ ๋ฌธ์ ์ ๊ตฌํ ๋ฐฉ์์ ๊ฐ๋ค. ๋จ, ์ค๊ฐ์ ์ฅ์ ๋ฌผ์ด ์๋ ๊ฒฝ์ฐ ๊ทธ์ชฝ์ผ๋ก๋ ๊ฐ ์ ์๋ค๋ ์กฐ๊ฑด์ด ์๋ค.
ํ์ด
- dp ๋ฐฐ์ด ์ ์ : (i,j) ์์ญ์ ๋๋ฌํ๋ ๊ฒฝ๋ก์ ์
- (i,0) / (0,j) ์ค์ ๊ฒฝ์ฐ์ ์๊ฐ ํ๋๋ฟ์ด๋ฏ๋ก ๋ฏธ๋ฆฌ ์ฑ์ ๋๋๋ค.
- ์ฅ์ ๋ฌผ์ด ์๋ ๊ฒฝ์ฐ 0, ์๋ ๊ฒฝ์ฐ 1๋ก ์ธํ
ํ๋ค.
- ์ฅ์ ๋ฌผ ์ดํ์ ๊ฒฝ๋ก๋ ๋ชป์ง๋๊ฐ๋ฏ๋ก break
- ์ ํ์ ๋์ถ : ๋ฌธ์ ์์ ๋ก๋ด์ ์ค๋ฅธ์ชฝ ๋๋ ์๋ ๋ก ๋ฐ์ ์์ง์ด์ง ๋ชปํ๋ค๊ณ ํ์ผ๋ฏ๋ก (i, j) ์์ญ์ ๋๋ฌํ๋ ๊ฒฝ์ฐ์ ์๋ ์ผ์ชฝ์์ ์ค๋ ๊ฒฝ์ฐ์ ์ + ์์์ ์ค๋ ๊ฒฝ์ฐ์ ์๋ก ๋ํ๋ผ ์ ์๋ค.
- dp[i][j] = dp[i][j - 1] + dp[i - 1][j]
- ์ฅ์ ๋ฌผ์ด ์๋ ๊ฒฝ์ฐ(
obstacleGrid[i][j] == 1) ๊ทธ ๊ฒฝ๋ก์ ๋๋ฌํ ์ ์์ผ๋ฏ๋ก 0์ผ๋ก ์ธํ
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
class Solution {
public int uniquePathsWithObstacles(int[][] obstacleGrid) {
int m = obstacleGrid.length;
int n = obstacleGrid[0].length;
int[][] dp = new int[m][n];
for (int i = 0; i < m; i++) {
if (obstacleGrid[i][0] == 1) {
dp[i][0] = 0;
break;
} else {
dp[i][0] = 1;
}
}
for (int i = 0; i < n; i++) {
if (obstacleGrid[0][i] == 1) {
dp[0][i] = 0;
break;
} else {
dp[0][i] = 1;
}
}
for (int i = 1; i < m; i++) {
for (int j = 1; j < n; j++) {
if (obstacleGrid[i][j] == 1) {
dp[i][j] = 0;
} else {
dp[i][j] = dp[i - 1][j] + dp[i][j - 1];
}
}
}
return dp[m - 1][n - 1];
}
}
๋๊ธ๋จ๊ธฐ๊ธฐ