메모리: 14196 KB, 시간: 100 ms
다이나믹 프로그래밍
2025년 1월 28일 03:05:30
45656이란 수를 보자.
이 수는 인접한 모든 자리의 차이가 1이다. 이런 수를 계단 수라고 한다.
N이 주어질 때, 길이가 N인 계단 수가 총 몇 개 있는지 구해보자. 0으로 시작하는 수는 계단수가 아니다.
첫째 줄에 N이 주어진다. N은 1보다 크거나 같고, 100보다 작거나 같은 자연수이다.
첫째 줄에 정답을 1,000,000,000으로 나눈 나머지를 출력한다.
/**
* Author: yngbao97, Yuk Yejin
* Problem: 쉬운 계단 수_10844
* Date: 2025.01.28
*/
import java.util.*;
import java.lang.*;
import java.io.*;
public class Main {
static BufferedReader br;
static BufferedWriter bw;
static StringTokenizer st;
public static void main(String[] args) throws Exception {
br = new BufferedReader(new InputStreamReader(System.in));
bw = new BufferedWriter(new OutputStreamWriter(System.out));
int n = Integer.parseInt(br.readLine());
int[][] dp = new int[10][n];
for (int i = 1; i < 10; i++) dp[i][0] = 1;
for (int c = 1; c < n; c++) {
dp[0][c] = dp[1][c-1] % 1_000_000_000;
dp[9][c] = dp[8][c-1] % 1_000_000_000;
for (int r = 1; r < 9; r++) {
dp[r][c] = (dp[r-1][c-1] + dp[r+1][c-1]) % 1_000_000_000;
}
}
int answer = 0;
for (int i = 0; i < 10; i++) answer = (answer + dp[i][n-1]) % 1_000_000_000;
bw.write(String.valueOf(answer));
bw.flush();
bw.close();
br.close();
}
}