https://www.acmicpc.net/problem/10844
10844번: 쉬운 계단 수
첫째 줄에 정답을 1,000,000,000으로 나눈 나머지를 출력한다.
www.acmicpc.net
풀이 과정
D[n][k] => 마지막이 k로 끝나는 n자리 계단수의 개수라고 하자
모든 인접한 자리의 차이가 1이어야 한다는 점을 고려하면 다음과 같은 점화식을 생각할 수 있다
D[n][0] = D[n-1][1]
D[n][k] = D[n-1][k-1] + D[n-1][k+1] (1 <= k <= 8)
D[n][9] = D[n-1][8]
이를 통해 문제를 해결할 수 있다
소스 코드
N = int(input())
d = [0, [0, 1, 1, 1, 1, 1, 1, 1, 1, 1]]
for i in range(2, N+1):
d.append([0, 0, 0, 0, 0, 0, 0, 0, 0, 0])
d[i][0] = d[i-1][1] % 1000000000
d[i][9] = d[i-1][8] % 1000000000
for k in range(1, 9):
d[i][k] = d[i-1][k-1]+ d[i-1][k+1]
d[i][k] %= 1000000000
print(sum(d[N]) % 1000000000)
'알고리즘 문제 풀이 > 백준' 카테고리의 다른 글
백준 11053 - 가장 긴 증가하는 부분 수열 [파이썬] (0) | 2022.04.20 |
---|---|
백준 2193 - 이친수 [파이썬] (0) | 2022.04.20 |
백준 15990 - 1, 2, 3 더하기 5 [파이썬] (0) | 2022.04.20 |
백준 16194 - 카드 구매하기 2 [파이썬] (0) | 2022.04.11 |
백준 11052 - 카드 구매하기 [파이썬] (0) | 2022.04.11 |