[백준 / 실버3] 2579 계단 오르기 (Java)

Ilhwanee·2022년 7월 9일
0

코딩테스트

목록 보기
33/155

문제 보기



사용한 것

  • 계단을 오르는 점수 합을 점차적으로 구하기 위한 bottom-up


풀이 방법

  • 연속으로 3개의 계단을 못 오른다.
  • 따라서 현재 계단에 도착할 수 있는 경우의 수는 3칸 전 -> 1칸 전 -> 현재, 2칸 전 -> 현재 이 2가지 경우이다.


코드

public class Main {

    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        int N = Integer.parseInt(br.readLine());
        int[] arr = new int[N + 1];
        for (int i = 1; i <= N; i++) {
            arr[i] = Integer.parseInt(br.readLine());
        }

        int[] d = new int[N + 1];
        d[1] = arr[1];
        if (N > 1) {
            d[2] = arr[1] + arr[2];
        }
        if (N > 2) {
            d[3] = Math.max(d[1], d[0] + arr[2]) + arr[3];
        }

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

        System.out.println(d[N]);
    }
}


profile
블로그 이전 -> https://pppp0722.github.io

0개의 댓글