https://programmers.co.kr/learn/courses/30/lessons/42897
#include <string>
#include <vector>
using namespace std;
int solution(vector<int> money) {
int answer = 0;
int sz = money.size();
int dp[sz]; // 0번집 포함
int dp2[sz]; // 0번집 미포함
dp[0] = money[0];
dp[1] = money[0];
dp2[0] = 0;
dp2[1] = money[1];
for(int i=2; i<sz-1; i++){
dp[i] = max(dp[i-2] + money[i],dp[i-1]);
dp2[i] = max(dp2[i-2] + money[i],dp2[i-1]);
}
dp2[sz-1] = max(dp2[sz-3]+money[sz-1],dp2[sz-2]);
answer = max(dp[sz-2],dp2[sz-1]);
return answer;
}
'프로그래머스' 카테고리의 다른 글
거리두기 확인하기 C++ (0) | 2021.12.03 |
---|---|
징검다리 건너기 C++ (0) | 2021.10.06 |
셔틀버스 C++ (0) | 2021.10.03 |
다단계 칫솔 C++ (0) | 2021.10.03 |
불량 사용자 C++ (0) | 2021.10.02 |