728x90
반응형
https://www.acmicpc.net/problem/10844
문제
45656이란 수를 보자.
이 수는 인접한 모든 자리의 차이가 1이다. 이런 수를 계단 수라고 한다.
N이 주어질 때, 길이가 N인 계단 수가 총 몇 개 있는지 구해보자. 0으로 시작하는 수는 계단수가 아니다.
입력
첫째 줄에 N이 주어진다. N은 1보다 크거나 같고, 100보다 작거나 같은 자연수이다.
출력
첫째 줄에 정답을 1,000,000,000으로 나눈 나머지를 출력한다.
뒤에 추가할 수 있는 숫자의 개수(0~9)
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | |
n=1 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
n=2 | 1 | 1 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 1 |
n=3 | 1 | 3 | 3 | 4 | 4 | 4 | 4 | 4 | 3 | 2 |
n=1일 때 0은 올 수 없고 1~9까지 가능하다
n=2일 때.. 뒷자리수가 0이 되는 경우는 앞자리수가 1인경우고
뒷자리수가 1~8이 되는 경우는 앞자리수가 -1 ,+1인 수의 개수의 합이고
뒷자리수가 9가 되는 경우는 앞자리수가 8인 경우다
대충 찍찍 그어보면 이런 느낌인데
ㅋㅋ
ㅋㅋㅋ
그리기가 쉽지 않음
암튼 난 이해함~
n=int(input())
d=[[0]*10 for i in range(101)]
d[1]=[0,1,1,1,1,1,1,1,1,1]
for i in range(2,101):
for j in range(10):
if j==0:
d[i][j]=d[i-1][1]
elif j==9:
d[i][j]=d[i-1][8]
else:
d[i][j]=d[i-1][j-1]+d[i-1][j+1]
print(sum(d[n])%1000000000)
728x90
반응형
'코딩 > 백준-파이썬' 카테고리의 다른 글
백준 2193번: 이친수(DP) (0) | 2022.08.02 |
---|---|
백준 11057번: 오르막 수 (DP) (0) | 2022.08.02 |
백준 1744번: 수 묶기(그리디 알고리즘) (0) | 2022.08.01 |
백준 17270번: 연예인은 힘들어 (0) | 2022.08.01 |
백준 1976번: 여행 가자 (0) | 2022.07.31 |
댓글