알고리즘 - 백준, 10844번 쉬운 계단 수 (DP)

jodbsgh·2023년 4월 9일
0

✅점화식 도출

dp[i][j] = dp[i-1][j-1] + dp[i-1][j+1]

dp[i][j]에서 길이는 i, 마지막 자리수의 값은 j인 계단의 개수
길이가 i-1이고 마지막 자리수가 j-1또는 j+1인 계단의 수를 모두 더하여 구할 수 있다.

ex) dp[2][1]인 경우
길이가 1, 즉 n=1인 계단의 수는 1~9까지 총 9개이다.
길이가 2 즉 n=2인 계단의 수는 길이가 1인 계단의 수에서 
0에서 1
2에서 3
3에서 4
.
.
.
8에서 9로 이동하는 경우를 모두 더한 것과 같다.
따라서 dp[2][1]은 dp[1][0] + dp[1][2]으로 구할 수있다.

✅코드

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;

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 dp[][] = new int[100 + 1][10 + 1];
		for (int i = 1; i <= 9; i++) {
			dp[1][i] = 1;
		}
		for (int i = 2; i <= N; i++) {
			dp[i][0] = dp[i - 1][1];
			for (int j = 1; j <= 9; j++) {
				dp[i][j] = (dp[i - 1][j - 1] + dp[i - 1][j + 1]) % 1000000000;
			}
		}
		long ans = 0;
		for (int i = 0; i < 10; i++) {
			ans += dp[N][i];
		}
		System.out.println(ans % 1000000000);
	}
}
profile
어제 보다는 내일을, 내일 보다는 오늘을 🚀

0개의 댓글