[백준] 포도주 시식 Java

dustle·2023년 3월 28일
1

포도주 시식

점화식으로 dp 를 만드는 문제입니다.

3개 연속으로 먹을 수 없으므로 경우의 수를
oox
oxo
xoo
의 3가지 방법으로 나누면 편합니다.

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[] arr = new int[n];

        for(int i = 0; i < n; i++)
            arr[i] = Integer.parseInt(br.readLine());

        int[] dp = new int[n];//여태 먹은거에 최대값

        dp[0] = arr[0];

        if(n > 1) dp[1] = dp[0] + arr[1];
        if(n > 2) dp[2] = Math.max(dp[1], Math.max(dp[0] + arr[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-1]);
    }
}

0개의 댓글