[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];
}
}
λκΈλ¨κΈ°κΈ°