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 배열
33class Solution {
4- int size = 0 ;
5- int [] numArray ;
6- int [] dp ;
7-
84 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 ];
169
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 ]);
2319 }
2420}
21+
You can’t perform that action at this time.
0 commit comments