[백준, BOJ 2579] 계단 오르기 (java)
Problem Solving/BOJ

[백준, BOJ 2579] 계단 오르기 (java)

728x90

출처-https://www.acmicpc.net/problem/2579

 

2579번: 계단 오르기

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

www.acmicpc.net


728x90

 

내가 푼 방식 :

dp[i-3]+arr[i-1]+arr[i]와 dp[i-2]+arr[i] 중에 큰 것을 비교
둘 중 큰 것을 dp[i]에 넣는다.
그리고 dp[i-1]과 dp[i]을 비교.

 

import java.util.*;

public class Main {

	public static void main(String[] args) {
		// TODO Auto-generated method stub

		Scanner scan=new Scanner(System.in);
		int n=scan.nextInt();
		int arr[]=new int[n+1];
		long dp[]=new long[n+1];
		
		for (int i=1;i<=n;i++)
			arr[i]=scan.nextInt();
		
		dp[1]=arr[1];
		if (n>=2)
			dp[2]=dp[1]+arr[2];
		for (int i=3;i<=n;i++) {
			dp[i]=Math.max(dp[i-2]+arr[i],dp[i-3]+arr[i-1]+arr[i]);
		}
		System.out.println(dp[n]);
	}

}
728x90