본문으로 바로가기

[알고리즘 문제]돌다리 건너기

category Algorithm/Dynamic Programming 2022. 1. 24. 08:14
728x90
반응형

▷ 문제

철수는 학교에 가는데 개울을 만났습니다. 개울은 N개의 돌로 다리를 만들어 놓았습니다. 철수는 돌 다리를 건널 때 한 번에 한 칸 또는 두 칸씩 건너뛰면서 돌다리를 건널 수 있습니다.
철수가 개울을 건너는 방법은 몇 가지일까요?

* 입력
첫째 줄은 돌의 개수인 자연수 N(3≤N≤35)이 주어집니다.
* 출력설명
첫 번째 줄에 개울을 건너는 방법의 수를 출력합니다.

▷ 입력 예시

7

▷ 출력 예시

34

▷ 풀이

import java.util.*;
import java.io.BufferedReader;
import java.io.InputStreamReader;

class Main {
    static int[] dy;
    public int solution(int n){
        dy[1] = 1;
        dy[2] = 2;

        for(int i=3; i<=n+1; i++){
            dy[i] = dy[i-1] + dy[i-2];
        }

        return dy[n+1]; // 돌다리를 거는 방법 = 돌다리를 건넌 시점의 경우의 수
    }

    public static void main(String[] args) throws IOException {
        Main main = new Main();
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        int n = Integer.parseInt(br.readLine());

        dy = new int[n+2];
        System.out.println(main.solution(n));
    }
}

▷ 메모

  • 계단 오르기 문제와 다르게 돌다리 문제는 건넌 시점의 경우의 수를 물어보는 것임에 주의
반응형