1. BOJ 10844 쉬운계단수
실버 1, DP
https://www.acmicpc.net/problem/10844
코드
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
N = int(input())
dp = []
for i in range(N):
dp.append([0 for _ in range(10)])
dp[0] = [0, 1, 1, 1, 1, 1, 1, 1, 1, 1]
if N>=2:
for i in range(1, N):
for j in range(10):
if j==0:
dp[i][j] = dp[i-1][j+1]
elif j==9:
dp[i][j] = dp[i-1][j-1]
else:
dp[i][j] = dp[i-1][j-1] + dp[i-1][j+1]
ans = sum(dp[N-1])
print(ans%1000000000)
|
cs |
설명
입력 : 자릿수, 해당 자릿수에서 계단수의 개수를 출력하는 것이 목표이다.
계단수란, 101 210 323 처럼 각 자릿수의 차이가 1인 수이다. 0으로 시작하는 수는 없다고 한다.
아이디어는 다음과 같다.
dp[n][i]에는 n번째 자리수에서 i로 끝나는 계단수의 개수가 기록된다. dp[n-1][i-1]+dp[n-1][i+1]로 구할 수 있었다. 물론 이때 0과 9는 예외처리가 필요하다.
'python, pyTorch > 코딩테스트-파이썬' 카테고리의 다른 글
BOJ ATM, 2xn타일링(1,2), FourSquares (0) | 2022.03.07 |
---|---|
BOJ 1로만들기2, 포도주시식 (0) | 2022.03.04 |
BOJ 1806 부분합 (0) | 2022.03.01 |
BOJ 2644 촌수계산 (0) | 2022.02.25 |
파이썬 round, sys.stdin.readline() (2) | 2022.02.16 |