본문 바로가기

백준

BOJ[JAVA] 2579 계단 오르기

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

 

2579번: 계단 오르기

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

www.acmicpc.net

 

import java.io.*;

public class Main {
	public static void main(String[] args) throws IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		
		int stairs = Integer.parseInt(br.readLine());	// 계단의 개수 (입력)
		int[] score = new int[stairs+1];	// 각 계단에 쓰여 있는 점수 (입력)
		int[] dp = new int[stairs+1];		// 각 계단에서 얻을 수 있는 점수의 최댓값
		
		for(int i=1;i<=stairs;i++) {
			score[i] = Integer.parseInt(br.readLine());
		}
		
		dp[1] = score[1];	// 첫번째 계단에서 얻을 수 있는 점수의 최댓값 = 첫번째 계단에 쓰여 있는 점수
		if(stairs>1) {
			dp[2] = score[1]+score[2];	// 두번째 계단에서 얻을 수 있는 점수의 최댓값 (첫번째 계단의 점수 + 두번째 계단의 점수)
			
			if(stairs>2) {
				// 각 계단에서 얻을 수 있는 점수의 최댓값
				for(int i=3;i<=stairs;i++) {
					dp[i] = score[i] + Math.max(dp[i-2], score[i-1]+dp[i-3]);
				}
			}
		}
		
		System.out.println(dp[stairs]);	// 게임에서 얻을 수 있는 총 점수의 최댓값
	}
}

'백준' 카테고리의 다른 글

BOJ[JAVA] 9461 파도반 수열  (0) 2023.05.14
BOJ[JAVA] 11727 2xn 타일링 2  (0) 2023.05.14
BOJ[JAVA] 9095 1,2,3 더하기  (0) 2023.04.23
BOJ[JAVA] 1182 부분수열의 합  (0) 2023.04.23
BOJ[JAVA] 17103 골드바흐 파티션  (0) 2023.04.23