File tree Expand file tree Collapse file tree 1 file changed +16
-19
lines changed Expand file tree Collapse file tree 1 file changed +16
-19
lines changed Original file line number Diff line number Diff line change 1
- import java . util . Arrays ;
2
-
1
+ // 시간 복잡도: O(n) - dp 배열을 한 번 순회
2
+ // 공간 복잡도: O(n) - dp 배열
3
3
class Solution {
4
- int size = 0 ;
5
- int [] numArray ;
6
- int [] dp ;
7
-
8
4
public int rob (int [] nums ) {
9
- size = nums .length ;
10
- dp = new int [size ];
11
- // 배열의 모든 값을 -1로 변경
12
- Arrays .fill (dp , -1 );
13
- numArray = nums ;
14
- return fun (0 );
15
- }
5
+ int [][] dp = new int [nums .length ][2 ]; // 0: not robbed, 1: robbed
6
+
7
+ if (nums .length == 0 ) return 0 ;
8
+ if (nums .length == 1 ) return nums [0 ];
16
9
17
- private int fun (int idx ) {
18
- if (idx >= size ) return 0 ;
19
- if (dp [idx ] != -1 ) return dp [idx ];
20
- dp [idx ] = 0 ; // check
21
- dp [idx ] += Math .max (fun (idx + 2 ) + numArray [idx ], fun (idx + 1 ));
22
- return dp [idx ];
10
+ dp [0 ][0 ] = 0 ;
11
+ dp [0 ][1 ] = nums [0 ];
12
+
13
+ for (int i = 1 ; i < nums .length ; i ++){
14
+ dp [i ][0 ] = Math .max (dp [i -1 ][0 ], dp [i -1 ][1 ]);
15
+ dp [i ][1 ] = dp [i -1 ][0 ] + nums [i ];
16
+ }
17
+
18
+ return Math .max (dp [nums .length -1 ][0 ], dp [nums .length -1 ][1 ]);
23
19
}
24
20
}
21
+
You can’t perform that action at this time.
0 commit comments