Skip to content

Commit a230dab

Browse files
committed
Solution: House-robber
1 parent e77dac3 commit a230dab

1 file changed

Lines changed: 35 additions & 0 deletions

File tree

β€Žhouse-robber/nowrobin.jsβ€Ž

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
/**
2+
* @param {number[]} nums
3+
* @return {number}
4+
*/
5+
var rob = function(nums) {
6+
// μ§‘μ˜ 개수
7+
const n = nums.length;
8+
9+
// 집이 ν•˜λ‚˜λΏμ΄λ©΄ κ·Έ 집을 ν„°λŠ” 것이 μ΅œλŒ€κ°’
10+
if (n === 1) {
11+
return nums[0];
12+
}
13+
14+
// dp[i] = 0번 μ§‘λΆ€ν„° i번 μ§‘κΉŒμ§€ κ³ λ €ν–ˆμ„ λ•Œ ν›”μΉ  수 μžˆλŠ” μ΅œλŒ€ κΈˆμ•‘
15+
const dp = Array(n).fill(0);
16+
17+
// 첫 번째 μ§‘κΉŒμ§€μ˜ μ΅œλŒ€ κΈˆμ•‘
18+
dp[0] = nums[0];
19+
20+
// 두 번째 μ§‘κΉŒμ§€μ˜ μ΅œλŒ€ κΈˆμ•‘
21+
// 두 집은 λ™μ‹œμ— ν„Έ 수 μ—†μœΌλ―€λ‘œ λ‘˜ 쀑 큰 값을 선택
22+
dp[1] = Math.max(nums[0], nums[1]);
23+
24+
// μ„Έ 번째 μ§‘λΆ€ν„° λ§ˆμ§€λ§‰ μ§‘κΉŒμ§€ 반볡
25+
for (let i = 2; i < n; i++) {
26+
27+
// 두 κ°€μ§€ 선택지 쀑 더 큰 값을 선택
28+
// 1️⃣ ν˜„μž¬ 집을 ν„Έμ§€ μ•ŠλŠ”λ‹€ β†’ 이전 μ§‘κΉŒμ§€μ˜ μ΅œλŒ€ κΈˆμ•‘(dp[i-1])
29+
// 2️⃣ ν˜„μž¬ 집을 ν„΄λ‹€ β†’ μ „μ „ μ§‘κΉŒμ§€μ˜ μ΅œλŒ€ κΈˆμ•‘(dp[i-2]) + ν˜„μž¬ μ§‘ 돈(nums[i])
30+
dp[i] = Math.max(dp[i - 1], nums[i] + dp[i - 2]);
31+
}
32+
33+
// λ§ˆμ§€λ§‰ μ§‘κΉŒμ§€ κ³ λ €ν–ˆμ„ λ•Œμ˜ μ΅œλŒ€ κΈˆμ•‘ λ°˜ν™˜
34+
return dp[n - 1];
35+
};

0 commit comments

Comments
Β (0)