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 |