45656이란 수를 보자.
이 수는 인접한 모든 자리수의 차이가 1이 난다. 이런 수를 계단 수라고 한다.
세준이는 수의 길이가 N인 계단 수가 몇 개 있는지 궁금해졌다.
N이 주어질 때, 길이가 N인 계단 수가 총 몇 개 있는지 구하는 프로그램을 작성하시오. (0으로 시작하는 수는 없다.)
첫째 줄에 N이 주어진다. N은 1보다 크거나 같고, 100보다 작거나 같은 자연수이다.
첫째 줄에 정답을 1,000,000,000으로 나눈 나머지를 출력한다.
import java.io.*;
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());
//N번째 자리에 1부터 9까지의 가능성
long dp[][] = new long[N+1][10];
//첫번째인 한자리는 경우의 수가 한가지밖에없음
for(int i=1; i<10; i++){
dp[1][i] = 1;
}
for(int i=2; i<=N; i++){
for(int j=0; j<10; j++){
if(j==0)
dp[i][j] = dp[i-1][j+1]%1000000000;
else if(j==9)
dp[i][j] = dp[i-1][j-1]%1000000000;
else
dp[i][j] = dp[i-1][j-1]+dp[i-1][j+1]%1000000000;
}
}
long result = 0;
for(int i=0; i<10; i++){
result += dp[N][i];
}
System.out.println(result%1000000000);
}
}