백준 2688 줄어들지 않아 - 파이썬 풀이 🦄
문제
왼쪽의 Digit이 항상 오른쪽보다 작은 경우의 수를 찾는 문제이다.
Keypoints
- 왼쪽의 수가 주어졌을 때, 오른쪽에 하나를 더 붙이는 수를 생각한다.
XXX4 -> 4,5,6,7,8,9
6개를 붙일 수 있음.
Solution
def construct_dp(n):
store_count = [[1 for i in range(10)]]
for i in range(1,n):
count_per_digit = [0 for i in range(10)]
for digit in range(0, 10):
count_per_digit[digit] = sum(store_count[i-1][:digit+1])
store_count.append(count_per_digit)
return store_count
num_test_case = int(input())
targets = [int(input()) for i in range(num_test_case)]
stored_counts = construct_dp(max(targets))
for number in targets:
print(sum(stored_counts[number-1]))
References
'프로그래밍' 카테고리의 다른 글
[백준 14226 이모티콘] - 파이썬 풀이 🦄 (1) | 2021.03.01 |
---|---|
[백준 11052 카드 구매하기] - 파이썬 풀이 🦄 (1) | 2021.02.27 |
[백준 4811 알약] - 파이썬 풀이 🦄 (0) | 2021.02.27 |
[백준 1446 지름길] - 파이썬 풀이 🦄 (0) | 2021.02.19 |
[백준 1707 이분 그래프] - 파이썬 풀이 🦄 (0) | 2021.02.18 |