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));
}
}
▷ 메모
- 계단 오르기 문제와 다르게 돌다리 문제는 건넌 시점의 경우의 수를 물어보는 것임에 주의
반응형
'Algorithm > Dynamic Programming' 카테고리의 다른 글
[알고리즘 문제]배낭 문제(백준 12865번) (1) | 2022.07.28 |
---|---|
[알고리즘 문제]계단오르기 - 다이나믹 프로그래밍(Bottom-Up) (1) | 2021.12.29 |