House Robber

ㅋㅋ·2022년 12월 14일
0

알고리즘-leetcode

목록 보기
69/135

0 이상의 정수가 담긴 벡터를 받고, 특정 조건을 만족하는 최대 값을 구하는 문제

벡터 내의 정수들을 더해나갈 수 있는데 한 정수를 선택하여 더하면,

해당 정수의 앞뒤로 인접한 정수들은 선택하여 더할 수 없다는 것이 조건이다.

class Solution {
public:
    int rob(vector<int>& nums) {
        
        int length = nums.size();
        if (length == 1)
        {
            return nums[0];
        }

        int memo[100]{[0 ... 99] = numeric_limits<int>::min()};

        memo[0] = nums[0];
        memo[1] = max(nums[0], nums[1]);

        for (int i = 2; i < length; i++)
        {
            memo[i] = max(memo[i - 2] + nums[i], memo[i - 1]);
        }

        return max(memo[length - 1], memo[length - 2]);
    }
};

0개의 댓글