ALGORITHM/LEETCODE|HACKERRANK
[LeetCode] Unique Paths II
0298
2021. 1. 18. 00:00
leetcode.com/problems/unique-paths-ii/
Unique Paths II - LeetCode
Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview.
leetcode.com
2021-01-17
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
37
38
39
40
41
|
public class SolutionUniquePaths2 {
public static int uniquePathsWithObstacles(int[][] obstacleGrid) {
int N = obstacleGrid.length;
int M = obstacleGrid[0].length;
int dp[][] = new int[N][M];
if(obstacleGrid[0][0] == 0) dp[0][0] = 1;
for(int i = 1; i < N; i++)
if(obstacleGrid[i][0] == 0) dp[i][0] = dp[i-1][0];
for(int i = 1; i < M; i++)
if(obstacleGrid[0][i] == 0) dp[0][i] = dp[0][i-1];
for(int i = 1; i < N; i++) {
for(int j = 1; j < M; j++) {
if(obstacleGrid[i][j] == 0) dp[i][j] = dp[i-1][j] + dp[i][j-1];
}
}
return dp[N-1][M-1];
}
public static void main(String[] args) {
/*int o[][] = {
{0,0,0},
{0,1,0},
{0,0,0}
};
*/
int o[][] = {
{1,0},
};
System.out.println(uniquePathsWithObstacles(o));
}
}
|
cs |
#문제풀이
1. dp 배열을 만든다
2. 시작 위치 (0, 0)이 0인 경우 dp값을 1로 저장한다.
3. y값이 0인 맨 위에 칼럼과, x 값이 0인 맨 왼쪽 세로 컬럼 두 개를 초기화한다.
만약 그 자리에 장애물이 없다면 그 전의 값을 받는다.
4. (1, 1)부터 (N-1, M-1)까지 돌면서, 장애물이 아닌 경우 그 전의 왼쪽값과 위의 값의 합을 더해서 dp배열에 저장한다.
5. dp[N-1][M-1] 값을 리턴한다.