백준
백준 2156 - Java
으엉어엉
2024. 11. 7. 08:24
728x90
import java.util.Scanner;
public class BJ2156 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int[] glasses = new int[n+1];
int[] dp = new int[n+1];
for (int i = 1; i <= n; i++) {
glasses[i] = sc.nextInt();
}
//n이 1이상일때
if (n >= 1) {
dp[1] = glasses[1];
}
//n이 2이상일때
if (n >= 2) {
dp[2] = glasses[1] + glasses[2];
}
for (int i = 3; i <= n; i++) {
dp[i] = Math.max(dp[i-1], Math.max(dp[i-2] + glasses[i], dp[i-3] + glasses[i-1] + glasses[i]));
}
System.out.println(dp[n]);
}
}
dp[i-1]: 현재 잔을 마시지 않고 이전까지 마신 포도주의 최대 양을 그대로 유지하는 경우
dp[i-2] + glasses[i]: 현재 잔을 마시고, 그 직전 잔은 마시지 않으면서 (i-2)번째 잔까지의 최대 양을 취하는 경우
dp[i-3] + glasses[i-1] + glasses[i]: 현재 잔과 바로 이전 잔을 연속으로 마시고, 그 직전의 (i-3)번째 잔까지 마신 포도주의 최대 양을 더하는 경우
728x90