계단 오르기처럼 풀면된다고 생각해서 자신감을 얻음..
연속해서 포도주를 마시지 않아도 된다.
즉, k번째 포도주 앞에 있을 때, k번째 포도주를 마시지 않는 것이 최댓값이 될 수가 있다.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int n = Integer.parseInt(br.readLine());
int[] S = new int[n+1];
int[][] D = new int[3][n+1];
for(int i=1; i<=n; i++) {
S[i] = Integer.parseInt(br.readLine());
}
// D[0][1] = 0;
D[1][1] = S[1];
D[2][1] = S[1];
int max = Math.max(D[0][1], Math.max(D[1][1], D[2][1]));
for(int i=2; i<=n; i++) {
D[0][i] = Math.max(D[0][i-1], Math.max(D[1][i-1], D[2][i-1]));
D[1][i] = Math.max(D[0][i-2], Math.max(D[2][i-2] ,D[1][i-2])) + S[i];
D[2][i] = Math.max(D[0][i-1], D[1][i-1]) + S[i];
}
System.out.println(max);
}
}