Leet Code 알고리즘
(Leet Code JS)House Robber
naeunchan
2022. 3. 14. 11:25
728x90
반응형
https://leetcode.com/problems/house-robber/
House Robber - LeetCode
Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview.
leetcode.com
DP 이용.
nums.length만큼 dp 배열을 선언하여 0으로 초기화.
dp[0] = nums[0]으로 저장하고 for문으로 1 ~ length만큼 반복한다.
점화식으로는 dp[i] = Math.max(nums[i] + (dp[i - 2] || 0), dp[i - 1])을 구할 수 있다.
dp[i - 2] || 0 은 i = 1부터 시작하기 때문에 i - 2가 배열의 범위를 벗어나서 undefined가 나온다.
이를 방지하기 위해 undfeind가 나오면 0을 더해준다.
리턴값은 dp[length - 1]을 한다.
var rob = function(nums) {
const length = nums.length;
const dp = Array(length).fill(0);
dp[0] = nums[0];
for(let i = 1; i < length; i++){
dp[i] = Math.max(nums[i] + (dp[i - 2] || 0), dp[i - 1]);
}
return dp[length - 1];
};728x90
반응형