File tree Expand file tree Collapse file tree 1 file changed +11
-14
lines changed Expand file tree Collapse file tree 1 file changed +11
-14
lines changed Original file line number Diff line number Diff line change 6
6
* @returns {number } 우측 하단까지 갈 수 있는 경우의 수
7
7
*
8
8
* - 시간 복잡도: O(m * n)
9
- * - m x n 크기의 배열을 초기화하고 순회
9
+ * - 전체 셀을 한 번씩 순회
10
10
*
11
- * - 공간 복잡도: O(m * n)
12
- * - m x n 크기의 배열을 사용
11
+ * - 공간 복잡도: O(n)
12
+ * - 1차원 배열 사용 (열 크기만큼의 배열)
13
13
*/
14
14
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 ) ;
17
17
18
- // 첫 번째 셀 (0, 0)은 1로 초기화 (경로 시작점)
19
- dp [ 0 ] [ 0 ] = 1 ;
20
18
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 ] ;
27
23
}
28
24
}
29
25
30
- return dp [ m - 1 ] [ n - 1 ] ;
26
+ // dp[n-1]에 우측 하단까지의 경로 수가 저장
27
+ return dp [ n - 1 ] ;
31
28
}
32
29
You can’t perform that action at this time.
0 commit comments