처음에 리커전으로 모든 경우의수를 조사해야하나 생각했다.
그러나 오히려 그렇게 해결하면,
각 자리수를 비교해야하며,
두자릿수 기준 00 같은 수의 처리가 애매해지는 문제가 발생해 오히려 더 귀찮아질 것 같았고
시간복잡도 측면에서 찜찜한 느낌도 들었다.
결국 결론은 2차원 배열을 이용한 dp였다.

# dp 설계
dp = [
[0] * 10 for _ in range(64 + 1)
]
# 초기 설정
for i in range(10):
dp[1][i] = 1
for i in range(1, 65):
dp[i][0] = 1
# dp 채워넣기
for i in range(2, 65):
for j in range(1, 10):
dp[i][j] = dp[i-1][j] + dp[i][j-1]
# t 입력
t = int(input())
for _ in range(t):
# n 입력
n = int(input())
# 출력
print(sum(dp[n]))
'Algorithm(BOJ, Python) > Dynamic Programing' 카테고리의 다른 글
| [백준_2156] 포도주시식 python (0) | 2022.06.29 |
|---|---|
| [백준_11726] 2×n 타일링 python (0) | 2022.06.28 |
| [백준_10164] 격자상의 경로 python (0) | 2022.06.26 |
| [백준_11052] 카드 구매하기 python (0) | 2022.06.25 |
| [백준_2502] 떡 먹는 호랑이 python (0) | 2022.06.23 |