Skip to content

Commit 9612086

Browse files
committed
add unique paths solution
1 parent 019027c commit 9612086

File tree

1 file changed

+64
-0
lines changed

1 file changed

+64
-0
lines changed

unique-paths/Tessa1217.java

Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
1+
/**
2+
* m x n 행렬이 있을 때 로봇이 상단-좌측 가장자리에서 하단-우측 가장자리로 갈 수 있는 경우의 수 구하기
3+
* 로봇은 오른쪽 또는 밑으로만 움직일 수 있음
4+
*/
5+
class Solution {
6+
7+
// DFS 시간 초과로 DP로 구현
8+
// 시간복잡도: O(m * n)
9+
public int uniquePaths(int m, int n) {
10+
int[][] dp = new int[m][n];
11+
12+
// 첫째 열
13+
for (int i = 0; i < m; i++) {
14+
dp[i][0] = 1;
15+
}
16+
17+
// 첫째 행
18+
for (int j = 0; j < n; j++) {
19+
dp[0][j] = 1;
20+
}
21+
22+
for (int i = 1; i < m; i++) {
23+
for (int j = 1; j < n; j++) {
24+
dp[i][j] = dp[i - 1][j] + dp[i][j - 1]; // 위, 왼쪽 값
25+
}
26+
}
27+
28+
return dp[m - 1][n - 1];
29+
30+
}
31+
32+
// DFS 시간 초과
33+
// private int cnt = 0;
34+
// int[] dx = {1, 0};
35+
// int[] dy = {0, 1};
36+
37+
// public int uniquePaths(int m, int n) {
38+
// int[][] path = new int[m][n];
39+
// dfs(0, 0, path);
40+
// return cnt;
41+
// }
42+
43+
// private void dfs(int x, int y, int[][] path) {
44+
45+
// if (x == path.length - 1 && y == path[0].length - 1) {
46+
// cnt++;
47+
// return;
48+
// }
49+
50+
// path[x][y] = 1;
51+
52+
// for (int i = 0; i < 2; i++) {
53+
// int nx = x + dx[i];
54+
// int ny = y + dy[i];
55+
// if (nx >= 0 && nx < path.length && ny >= 0 && ny < path[0].length && path[nx][ny] != 1) {
56+
// dfs(nx, ny, path);
57+
// }
58+
// }
59+
60+
// path[x][y] = 0;
61+
62+
// }
63+
}
64+

0 commit comments

Comments
 (0)