N

(Leet Code JS)House Robber 본문

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
반응형

'Leet Code 알고리즘' 카테고리의 다른 글

(Leet Code JS)Multiply Strings  (0) 2022.03.21
(Leet Code JS)House Robber II  (0) 2022.03.16
(Leet Code JS)Valid Sdoku  (0) 2022.03.11
(Leet Code JS)Letter Case Permutation  (0) 2022.03.11
(Leet Code JS)Rotting Oranges  (0) 2022.03.10