PS(Java)/백준

[PS] 백준 2156번 포도주 시식 - DP

UL :) 2022. 2. 8. 22:28

문제

예제

풀이

풀다가 영 감이 안와서
이전 문제에서 참고했던 블로그가 이해하기 쉽게 코드를 짜여있길래 또 참고한 풀이

코드

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.Scanner;
import java.util.StringTokenizer;

public class Main {

    public static void main(String[] args) throws NumberFormatException, IOException {

        Scanner in = new Scanner(System.in);

        int n = in.nextInt();

        int[] arr = new int[n+1];
        int[] dp = new int[n+1];

        for(int i=1; i<=n; i++) {
            arr[i] = in.nextInt();
        }

        dp[1] = arr[1];

        if(n>1) {
            dp[2] = arr[1] + arr[2];
        }

        for(int i=3; i<=n; i++) {
            dp[i] = Math.max(dp[i-1], Math.max(dp[i-2]+arr[i], dp[i-3]+arr[i-1]+arr[i]));
        }

        System.out.println(dp[n]);

    }
}