[백준 2156] 포도주 시식

like0·2022년 8월 30일
0

코테준비(JAVA)

목록 보기
32/37
post-thumbnail

생각 정리

계단 오르기처럼 풀면된다고 생각해서 자신감을 얻음..

생각하지 못한 것

연속해서 포도주를 마시지 않아도 된다.
즉, 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);
    }
}
profile
배우고 성장하는 개발자가 되기!

0개의 댓글