Skip to content

Commit 672830c

Browse files
author
jaehyunglee
committed
house-robber solution
1 parent a3db8f6 commit 672830c

File tree

1 file changed

+43
-0
lines changed

1 file changed

+43
-0
lines changed

house-robber/blossssom.ts

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
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+
}

0 commit comments

Comments
 (0)