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]);
}
};