Algorithm/백준
[백준] 10844번 쉬운 계단 수
sirius
2021. 3. 5. 09:35
https://www.acmicpc.net/problem/10844
10844번: 쉬운 계단 수
첫째 줄에 정답을 1,000,000,000으로 나눈 나머지를 출력한다.
www.acmicpc.net
계단 수 : +1, -1
N번째 자릿수의 개념
ex ) 54321
첫번째 자릿수 : 1
두번째 자릿수 : 2
...
다섯번째 자릿수 : 5
- N번째 자릿수의 값이 0인 경우 : 1만 가능
- N번째 자릿수의 값이 9인 경우 : 8만 가능
- 그 외 1~ 8은 +1, -1가능
import java.util.*;
import java.io.*;
public class Main {
public static void main(String[] args) throws Exception {
long mod = 1000000000;
Scanner sc = new Scanner(System.in);
int N = sc.nextInt();
long[][] dp = new long[N+1][10];
// 첫 번째 자릿수: 경우의 수 1개
for(int i = 1; i < 10; i++) {
dp[1][i] = 1;
}
// 두번째 자릿수부터 N까지 탐색
for(int i = 2; i <= N; i++) {
// i번째 자릿수의 값 탐색 : 0~9
for(int j = 0; j < 10; j++) {
if(j == 0) {
dp[i][0] = dp[i-1][1] % mod;
} else if(j == 9) {
dp[i][9] = dp[i-1][8] % mod;
} else {
dp[i][j] = (dp[i-1][j-1] + dp[i-1][j+1]) % mod;
}
}
}
long ans = 0;
for(int i = 0; i < 10; i++) {
ans += dp[N][i];
}
System.out.println(ans % mod);
}
}