알고리즘 문제

[C/C++ 백준 2156번] 포도주 시식 (Silver 1)

새파란 공대생 2020. 5. 23. 18:30

https://www.acmicpc.net/problem/2156

 

2156번: 포도주 시식

효주는 포도주 시식회에 갔다. 그 곳에 갔더니, 테이블 위에 다양한 포도주가 들어있는 포도주 잔이 일렬로 놓여 있었다. 효주는 포도주 시식을 하려고 하는데, 여기에는 다음과 같은 두 가지 규

www.acmicpc.net

포도주를 시식할 수 있는 3가지 경우를 모두 비교해, 그중 가장 큰것을 저장하면 되는 문제이다. 매우 쉬움.

 

#include <cstdio>
#include <algorithm>
using namespace std;
int main(void){
	int n, juice[10001], dp[10001]={};
	scanf("%d", &n);
	for(int i=1; i<=n; i++){
		scanf("%d", &juice[i]);
		if(i==1)	dp[i]=juice[i];
		else if(i==2)	dp[i]=juice[i-1]+juice[i];
		else{
			dp[i]=max(juice[i]+juice[i-1]+dp[i-3], juice[i]+dp[i-2]);
			dp[i]=max(dp[i], dp[i-1]);
		}
	}
	printf("%d",dp[n]);
}