-
Notifications
You must be signed in to change notification settings - Fork 125
/
Copy pathsunjae95.js
31 lines (29 loc) ยท 1022 Bytes
/
sunjae95.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
/**
* @description
* ์ ํ์: dp[i] = Math.max(dp[i - 1], dp[i - 2] + current);
* ์ํํ๋ค๋ ์กฐ๊ฑด์ด ์์ผ๋ฏ๋ก ๋ค์๊ณผ ๊ฐ์ด ๋ถ๊ธฐ์ฒ๋ฆฌ ํ ์ ์๋ค.
* 1. ์ฒ์์ด ์ ํ O ๋ง์ง๋ง X
* 2. ์ฒ์์ด ์ ํ X ๋ง์ง๋ง ์๊ด์์
*
* n = length of nums
* time complexity: O(n)
* space complexity: O(n)
*/
var rob = function (nums) {
if (nums.length === 1) return nums[0];
if (nums.length === 2) return Math.max(nums[0], nums[1]);
const hasFirst = Array.from({ length: nums.length }, (_, i) =>
i < 2 ? nums[0] : 0
);
const noFirst = Array.from({ length: nums.length }, (_, i) =>
i === 1 ? nums[i] : 0
);
for (let i = 2; i < nums.length; i++) {
hasFirst[i] = Math.max(hasFirst[i - 1], hasFirst[i - 2] + nums[i]);
noFirst[i] = Math.max(noFirst[i - 1], noFirst[i - 2] + nums[i]);
if (i === nums.length - 1) {
hasFirst[i] = Math.max(hasFirst[i - 1], hasFirst[i - 2]);
}
}
return Math.max(hasFirst[nums.length - 1], noFirst[nums.length - 1]);
};