티스토리 뷰

728x90

문제

www.acmicpc.net/problem/2688

 

2688번: 줄어들지 않아

첫째 줄에 테스트 케이스의 개수 T(1 <= T <= 1,000)이 주어진다. 각 테스트 케이스는 숫자 하나 n으로 이루어져 있다. (1 <= n <= 64)

www.acmicpc.net

 

풀이

n == 3 일 경우까지 해 본다면,

규칙이 보인다 !

richard25.tistory.com/46

 

[Seop's의 코드풀이] 백준 2688 줄어들지 않아 - Python

이번에 풀어볼 문제는 백준 2688번 문제인 '줄어들지 않아' 라는 문제입니다. 문제는 다음과 같습니다. https://www.acmicpc.net/problem/2688 2688번: 줄어들지 않아 문제 어떤 숫자가 줄어들지 않는다는 것

richard25.tistory.com

이 설명을 참고하여 풀었다.

dp 배열을 dp[자릿수가 n일 때][0으로 시작할 때 부터 ~ 9로 시작할 때 까지의 경우의 수] 이런 식으로 설정해놓고,

dp[i][10]에는 dp[i]에 해당하는 합계를 저장해주었다.

소스코드

import sys
input = sys.stdin.readline

t = int(input())

for _ in range(t):
    n = int(input())
    dp = [[0]*(11) for _ in range(n+1)]
    dp[1] = [1,1,1,1,1,1,1,1,1,1,10]
    if n == 1:
        print('10')
        continue
    for i in range(2, n+1):
        for j in range(11):
            if j == 10:
                dp[i][10] = sum(dp[i])
            elif j == 0:
                dp[i][0] = dp[i-1][10]
            else:
                dp[i][j] = dp[i][j-1] - dp[i-1][j-1]
    print(dp[n][10])
반응형