쓸데없는 조건문을 엄청 만들어서 하고 있었는데 그런 코드는 좋은 코드가 아니라는 걸 다시 한 번 배우고 간다.
DP 배열의 조건을 확실히 이해하고 선언해 놓아야한다.
#include <iostream>
#define MAX 300
using namespace std;
int n, A[MAX+1],DP[MAX+1];
void input(){
cin >> n;
for(int i =1 ; i <= n; i++)
cin >> A[i];
}
void solve(){
DP[1] =A[1];
DP[2] =A[1]+A[2];
for(int i =3 ; i <= n; i++){
DP[i] = max(DP[i-2]+A[i], DP[i-3]+A[i-1]+A[i]);
}
cout << DP[n]<< endl;
}
int main() {
input();
solve();
return 0;
}
'Algorithm > BOJ' 카테고리의 다른 글
[BOJ] 1107 리모컨 (0) | 2021.07.21 |
---|---|
[BOJ] 2615 오목 (0) | 2021.07.15 |
[BOJ] 7573 고기잡이 (0) | 2021.07.14 |
[BOJ] 17255 N으로 만들기 (0) | 2021.06.23 |
[BOJ] 3933 라그랑주의 네 제곱수 정리 (0) | 2021.06.15 |