BOJ-10844 쉬운 계단 수
https://www.acmicpc.net/problem/10844
문제 소개
인접한 모든 자리의 차이가 1인 수를 계단 수라고 한다. n
이 주어졌을 때, 길이가 n
인 계단 수의 개수를 구한다.
문제 풀이
리스트 last
와 t
를 통해 DP
로 풀이하였다. t
는 DP
과정 중 임시로 값을 담는 리스트이다.
리스트 last
의 각 인덱스는 각 숫자로 끝나는 계단 수의 개수를 의미한다. last
는 처음에 n
이 1인 경우로 초기화되고, 반복문을 통해 n
이 1씩 커질 때마다 누적되는 값으로 업데이트한다.
마지막 숫자가 0
인 경우와 9
인 경우는 그 외의 경우와는 다르게 처리한다. 0
은 1
의 다음 수로만 가능하며, 9
는 8
의 다음 수로만 가능하기 때문이다.
결과는 sum(last) % 1000000000
으로 출력한다.
코드
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
n = int(input())
last = [0] + [1] * 9
t = last.copy()
for k in range(n - 1):
t = last.copy()
for i in range(10):
if i == 0:
last[i] = t[i + 1]
elif i == 9:
last[i] = t[i - 1]
else:
last[i] = t[i - 1] + t[i + 1]
print(sum(last) % 1000000000)
이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.