This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#include<cstdio> | |
#include<vector> | |
using namespace std; | |
int input[10001]; | |
int output[10001]; | |
int N; | |
int max(int a,int b,int c){ | |
if (a>=b && a>=c) | |
return a; | |
else if(b>=a && b>=c) | |
return b; | |
return c; | |
} | |
int dp(){ | |
output[0] = 0; | |
output[1] = input[1]; | |
output[2] = output[1]+input[2]; | |
for (int i=3;i<=N;i++){ | |
int a,b,c; | |
a = output[i-1]; //현재를 먹지 않을경우 | |
b = input[i]+output[i-2];//현재꺼 먹고 이전꺼 안먹는 경우 | |
c = input[i]+input[i-1]+output[i-3]; //현재꺼 먹고 이전꺼도 먹는경우 | |
output[i] = max(a,b,c); | |
} | |
return output[N]; | |
} | |
int main(void) | |
{ | |
scanf("%d",&N); | |
for (int i=1;i<=N;i++) | |
{ | |
scanf("%d",&input[i]); | |
} | |
int result; | |
if (N == 1) | |
result = input[1]; | |
else | |
result = dp(); | |
printf("%d",result); | |
} |
댓글
댓글 쓰기