λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°
πŸƒ algorithm/boj

BOJ 2688 - 쀄어듀지 μ•Šμ•„

by HandHand 2021. 3. 14.

문제

λ°±μ€€ 온라인 저지 - 2688번

풀이 κ³Όμ •

쀄어듀지 μ•ŠλŠ” n 자리 수λ₯Ό κ΅¬ν•˜λŠ” λ¬Έμ œμž…λ‹ˆλ‹€.

dp(num, digit) = num 보닀 ν¬κ±°λ‚˜ 같은 수둜 μ‹œμž‘ν•˜λŠ” digit 자리 수의 개수 라고 μ •μ˜ν•œλ‹€λ©΄
λ‹€μŒκ³Ό 같은 점화식을 λ„μΆœν•  수 μžˆμŠ΅λ‹ˆλ‹€.

dp(num, digit) = dp(num, digit - 1) + dp(num + 1, digit - 1) ...


μ΄λ•Œ `num` 은 `0 <= num <= 9` 이어야 ν•˜λ©° `n 자리수` 의 쀄어듀지 μ•ŠλŠ” μˆ˜λŠ” `dp(0~9, n)` μž…λ‹ˆλ‹€.

μ½”λ“œ



T = int(input())
testcases = [int(input()) for _ in range(T)]


def solution():
    memo = [[-1] * 65 for _ in range(10)]

    for digit in range(1, 65):
        for num in range(10):
            memo[num][digit] = 0
            if digit > 1:
                for to in range(num, 10):
                    memo[num][digit] += memo[to][digit - 1]
            else:
                memo[num][digit] = 1

    for n in testcases:
        answer = 0
        for num in range(10):
            answer += memo[num][n]
        print(answer)


solution()
λ°˜μ‘ν˜•

'πŸƒ algorithm > boj' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€

BOJ 3109 - 빡집  (0) 2021.03.14
BOJ 14620 - 꽃길  (0) 2021.03.14
BOJ 16472 - κ³ λƒ₯이  (0) 2021.03.14
BOJ 17086 - μ•„κΈ° 상어2  (0) 2021.03.08
BOJ 13335 - 트럭  (0) 2021.03.08

πŸ’¬ λŒ“κΈ€