문제
45656이란 수를 보자.
이 수는 인접한 모든 자리수의 차이가 1이 난다. 이런 수를 계단 수라고 한다.
세준이는 수의 길이가 N인 계단 수가 몇 개 있는지 궁금해졌다.
N이 주어질 때, 길이가 N인 계단 수가 총 몇 개 있는지 구하는 프로그램을 작성하시오. (0으로 시작하는 수는 없다.)
입력
첫째 줄에 N이 주어진다. N은 1보다 크거나 같고, 100보다 작거나 같은 자연수이다.
출력
첫째 줄에 정답을 1,000,000,000으로 나눈 나머지를 출력한다.
출력코드
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 | import java.util.*; import java.lang.*; import java.io.*; public class Main { static long[][] d; public static void main(String[] args) { // TODO Auto-generated method stub // your code goes here // 계단오르기 solve(); } public static final void solve() { Scanner sc = new Scanner(System.in); int n = sc.nextInt(); long[][] dp = new long[101][11]; // dp[N][L] = dp[N - 1][L - 1] + dp[N - 1][L + 1] // 길이 N, 마지막 숫자가 L일 경우 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 sum = 0; for (int i = 0; i < 10; i++) { sum += dp[n][i]; } System.out.println(sum % 1000000000); } } | cs |
'알고리즘 문제 (백준저지) > DP' 카테고리의 다른 글
[백준/9465] 스티커 (Java/코드) (0) | 2018.11.20 |
---|---|
[백준/11057] 오르막 수 (Java/코드) (0) | 2018.11.20 |
[백준/2193] 이친수 (Java/코드) (0) | 2018.11.20 |
[백준/-] 붕어빵 판매하기 (0) | 2018.11.20 |
[백준/9095] 1, 2, 3 더하기 (Java/코드) (0) | 2018.11.20 |