[코딩테스트 준비 C++] 포도주 시식

정우·2022년 10월 26일
0
post-thumbnail

오늘 푼 문제

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

포도주 시식

  • 풀이 방식
조건이 연속으로 놓인 3잔을 모두 마실 수 없다는 것이다.

1. dp[n-2] + wine[n]
2. dp[n-3] + wine[n-1] + wine[n]
3. dp[n-1]

나의 풀이

#include <iostream>

using namespace std;

int main() {

	int n;
	int wine[10001];
	int result[10001];

	cin >> n;

	
	for (int i = 0; i < n; i++) {
		cin >> wine[i];
	}

	result[0] = wine[0];
	result[1] = wine[0] + wine[1];

	for (int i = 2; i < n; i++) {
		result[i] = max(result[i - 3] + wine[i - 1] + wine[i], result[i - 2] + wine[i]); // dp[n-2] + array[n] || dp[n-3] + array[n-1] + array[n] || dp[n-1]
		result[i] = max(result[i], result[i - 1]);
	}
	

	cout << result[n-1] << endl;

	return 0;
}
profile
개발 일기장

0개의 댓글