코딩테스트/백준

[백준 2156번] 포도주 시식

seung_ho_choi.s 2025. 3. 25. 01:20
728x90

https://www.acmicpc.net/problem/2156

 

package dp;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class DP2156 {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        int N = Integer.parseInt(br.readLine());
        int[] podo = new int[N + 1];
        int[] dp = new int[N + 1];

        for (int i = 1; i < N + 1; i++) {
            podo[i] = Integer.parseInt(br.readLine());
        }

        dp[1] = podo[1];
        if (N > 1) {
            dp[2] = podo[1] + podo[2];
        }
        for (int i = 3; i < N + 1; i++) {
            dp[i] = Math.max(dp[i - 1], Math.max(dp[i - 3] + podo[i - 1] + podo[i], dp[i - 2] + podo[i]));
        }

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


    }
}

 

OOX - dp[i-1] 

OXO - dp[i-2] + podo[i] 

XOO - dp[i-3] + podo[i] + podo[i-1]

 

이렇게 유추해서 구하면 되는 간단한 문제이다!!! 생각만 잘하면~~

728x90