티스토리 뷰

[백준] 쉬운 계단 수 (10844번 : https://www.acmicpc.net/problem/10844)


문제

45656이란 수를 보자.

이 수는 인접한 모든 자리수의 차이가 1이 난다. 이런 수를 계단 수라고 한다.

세준이는 수의 길이가 N인 계단 수가 몇 개 있는지 궁금해졌다.

N이 주어질 때, 길이가 N인 계단 수가 총 몇 개 있는지 구하는 프로그램을 작성하시오. (0으로 시작하는 수는 없다.)

입력

첫째 줄에 N이 주어진다. N은 1보다 크거나 같고, 100보다 작거나 같은 자연수이다.

출력

첫째 줄에 정답을 1,000,000,000으로 나눈 나머지를 출력한다.


예제 입력 1 

1

예제 출력 1 

9

예제 입력 2 

2

예제 출력 2 

17



[나의 문제 풀이]

1. D[N] = 길이가 N인 계단 수의 개수이다. D[N]을 구해야 하는데 다이나믹 프로그래밍을 써야 하는 이유는 다음과 같다

** D[1] = 9개   1, 2, 3, 4, 5, 6, 7, 8, 9 이렇게 한 자리수 9개가 계단 수가 된다.

** D[2] = 17개 왜냐하면 D[1]에 나열된 숫자 앞 혹은 뒤에 차이가 1씩 나게 숫자를 넣어주면 되기 때문이다.

 ex) 10 12 23 34 45 56 67 78 89 

21 32 43 54 65 76 87 98    이렇게 D[1]에서의 앞 혹은 뒤에 1차이나는 숫자를 붙이기만 하면 되기 때문이다.


ex) D[3]의 경우에도 D[2]에서 구한 숫자들에서 마지막 자리수보다 +1, -1인 숫자들로 나열할 수 있다.

12(3) 12(1) 이렇게 2가지 경우가 나올 수 있다.


2. D[N]=D[N-1]+D[N-2]+1  여기서 1은 0이 포함 될 때의 경우

3.  





















'Daily Algorithm Solving' 카테고리의 다른 글

[백준] 저항 1076번  (0) 2018.09.29
[백준] 알파벳 찾기 10809번  (0) 2018.09.27
[백준] 오르막수 11057번  (0) 2018.09.16
[카카오 코딩테스트]OpenChatting  (0) 2018.09.15
[백준 11057] 오르막수 문제  (0) 2018.09.11
댓글