728x90
문제 번호: 10844
문제 제목: 쉬운 계단 수
문제 주소: https://www.acmicpc.net/problem/10844
문제 내용
글자 수 N이 주어졌을 때 N글자로 만들 수 있는 계단 수의 가짓수를 10억으로 나눈 나머지로 출력한다.
계단수는 45656처럼 인접한 숫자 간의 차의 절대값이 1인 수를 의미한다. 단, 0으로 시작할 수는 없다.
테스트 케이스
1 |
9 |
2 |
17 |
100 |
18404112 |
문제 풀이
i으로 끝나는 숫자는 그 다음 숫자가 i - 1, i + 1이 된다.
즉, N - 1글자의 M으로 끝나는 수는 N글자의 M - 1인 수와 M + 1인 수가 된다.
이를 표로 나타내보면 아래와 같다.
N | 0 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
1 | 0 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
2 | 1 |
1 |
2 |
2 |
2 |
2 |
2 |
2 |
2 |
1 |
3 | 1 |
3 |
3 |
4 |
4 |
4 |
4 |
4 |
3 |
2 |
4 | 3 |
4 |
7 |
7 |
8 |
8 |
8 |
7 |
6 |
3 |
5 | 4 |
10 |
11 |
15 |
15 |
16 |
15 |
14 |
10 |
6 |
따라서 동적계획법으로 코드를 작성한다면 위와 같이 N*10개짜리 배열을 만들고 1~8는 N-1의 i - 1과 i + 1를 합친 값을 대입하고, 0은 N-1의 1 값을, 9는 N-1의 8 값을 대입하는 것으로 N자의 글자 수를 구할 수 있다.
풀이 코드
728x90
'공부 > 문제풀기' 카테고리의 다른 글
백준 2558 - A+B - 2 (0) | 2019.09.24 |
---|---|
백준 2156 - 포도주 시식 (0) | 2019.08.26 |
백준 1463 - 1로 만들기 (0) | 2019.08.26 |
백준 2579 - 계단 오르기 (0) | 2019.08.23 |
백준 1932 - 정수 삼각형 (0) | 2019.08.23 |