File tree Expand file tree Collapse file tree 1 file changed +43
-0
lines changed Expand file tree Collapse file tree 1 file changed +43
-0
lines changed Original file line number Diff line number Diff line change 1+ /**
2+ * @description - 같은 날 인접한 두 집에 침입 시 자동으로 신고됨
3+ * @param nums - 각 집의 금액을 나타내는 정수 배열
4+ * @returns - 경찰에 신고되지 않고 훔칠 수 있는 최대 금액
5+ *
6+ * @description
7+ * - 1. tabulation 방식 - O(n)
8+ */
9+ // function rob(nums: number[]): number {
10+ // if (nums.length < 2) {
11+ // return nums[0];
12+ // }
13+
14+ // const dpTable: Array<number> = Array.from({ length: nums.length }, () => 0);
15+ // dpTable[0] = nums[0];
16+ // dpTable[1] = Math.max(nums[0], nums[1]);
17+
18+ // for (let i = 2; i < nums.length; i++) {
19+ // dpTable[i] = Math.max(nums[i] + dpTable[i - 2], dpTable[i - 1]);
20+ // }
21+
22+ // return Math.max(...dpTable);
23+ // }
24+
25+ function rob ( nums : number [ ] ) : number {
26+ const memo : Array < number > = Array . from ( { length : nums . length } , ( ) => - 1 ) ;
27+
28+ function solve ( i : number ) : number {
29+ if ( i < 0 ) {
30+ return 0 ;
31+ }
32+
33+ if ( memo [ i ] !== - 1 ) {
34+ return memo [ i ] ;
35+ }
36+
37+ const robCurrent = nums [ i ] + solve ( i - 2 ) ;
38+ const skipCurrent = solve ( i - 1 ) ;
39+ memo [ i ] = Math . max ( robCurrent , skipCurrent ) ;
40+ return memo [ i ] ;
41+ }
42+ return solve ( nums . length - 1 ) ;
43+ }
You can’t perform that action at this time.
0 commit comments