Skip to content

Commit 791ccd3

Browse files
committed
refac: #273 Unique Path 공간복잡도 개선 with ts
1 parent 0e3544a commit 791ccd3

File tree

1 file changed

+11
-14
lines changed

1 file changed

+11
-14
lines changed

unique-paths/Yjason-K.ts

Lines changed: 11 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -6,27 +6,24 @@
66
* @returns {number} 우측 하단까지 갈 수 있는 경우의 수
77
*
88
* - 시간 복잡도: O(m * n)
9-
* - m x n 크기의 배열을 초기화하고 순회
9+
* - 전체 셀을 한 번씩 순회
1010
*
11-
* - 공간 복잡도: O(m * n)
12-
* - m x n 크기의 배열을 사용
11+
* - 공간 복잡도: O(n)
12+
* - 1차원 배열 사용 (열 크기만큼의 배열)
1313
*/
1414
function uniquePaths(m: number, n: number): number {
15-
// m x n 크기의 배열을 초기화
16-
const dp = Array.from({ length: m }, () => Array(n).fill(0));
15+
// n(열) 크기의 배열을 생성
16+
const dp = Array(n).fill(1);
1717

18-
// 첫 번째 셀 (0, 0)은 1로 초기화 (경로 시작점)
19-
dp[0][0] = 1;
2018

21-
for (let i = 0; i < m; i++) {
22-
for (let j = 0; j < n; j++) {
23-
if (i === 0 && j === 0) continue; // 시작점은 이미 초기화됨
24-
25-
// 위쪽과 왼쪽 값을 더해 현재 셀의 경로 수 계산
26-
dp[i][j] = (dp[i - 1]?.[j] || 0) + (dp[i]?.[j - 1] || 0);
19+
for (let i = 1; i < m; i++) {
20+
for (let j = 1; j < n; j++) {
21+
// 현재 값 = 위쪽(dp[j]) + 왼쪽(dp[j-1])
22+
dp[j] = dp[j] + dp[j - 1];
2723
}
2824
}
2925

30-
return dp[m - 1][n - 1];
26+
// dp[n-1]에 우측 하단까지의 경로 수가 저장
27+
return dp[n - 1];
3128
}
3229

0 commit comments

Comments
 (0)