백준/동적 계획법

[백준] 2579 - 계단오르기 [JAVA]

odong2 2024. 4. 29. 17:24

 

코드

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

public class Main {

    static int[] stair;
    static int[] dp;
    static int N;

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

        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

        N = Integer.parseInt(br.readLine());

        stair = new int[N + 1];
        dp = new int[N + 1];

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


        dp[1] = stair[1];

        if (N >= 2) {
            dp[2] = stair[1] + stair[2];
        }

        for (int i = 3; i <= N; i++) {
            dp[i] = Math.max(dp[i - 2], dp[i - 3] + stair[i - 1]) + stair[i];
        }
        System.out.println(dp[N]);
    }

}