본문 바로가기

백준

DP: #2579: 계단오르기 [JAVA]

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

 

2579번: 계단 오르기

계단 오르기 게임은 계단 아래 시작점부터 계단 꼭대기에 위치한 도착점까지 가는 게임이다. <그림 1>과 같이 각각의 계단에는 일정한 점수가 쓰여 있는데 계단을 밟으면 그 계단에 쓰여 있는 점

www.acmicpc.net

 

 


 

 

 

문제 접근

 

 

#2156 포도주 시식과 유사

 

 

 

 

 

 

 

 

 

 

코드

 

 

 

 

bottom up - 반복문

 

 

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

public class Main {

	static Integer[] dp;
	static int[] arr;

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

		BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
		int N = Integer.parseInt(bf.readLine());

		dp = new Integer[N + 1];
		arr = new int[N + 1];

		for (int i = 0; i < N; i++) {
			arr[i + 1] = Integer.parseInt(bf.readLine());
		}

		dp[0] = 0;
		dp[1] = arr[1];

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

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

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

		bf.close();
	}

}