백준

백준 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

'백준' 카테고리의 다른 글

백준 9663 - Java  (1) 2024.11.09
백준 14501 -Java  (0) 2024.11.08
백준 1715 - Java  (0) 2024.11.06
백준 2217 - Java  (0) 2024.11.06
백준 1026 - Java  (1) 2024.11.05