백준/다이나믹 프로그래밍

# 2688 줄어들지 않아

bright_code 2020. 9. 14. 12:10
728x90
반응형
def no_reduce(n):
  dp = [ [0]*10 for _ in range(n) ] 

  dp[0] = [1]*10 

  for i in range(1,n):
  
    #dp[i][0] = dp[i-1][0] 

    for j in range(0,10):
      for k in range(j+1):
        dp[i][j] += dp[i-1][k]

  print(sum(dp[n-1]))

t = int(input())
data = [0]*t

for i in range(t):
  data[i] = int(input())

for i in data:
  no_reduce(i)

 

1 자리 인 경우 0~9 까지 1개씩 가능함.  -> dp[0] = [1]*10 

 

2 자리 이상인 경우, 

1자리 작은 경우의 수에서, 나보다 작거나 같은 수가 나오는 경우 만큼 내가 나올 수 있다. 

 

ex ) 

3자리 숫자 중, 숫자 2가 마지막에 오는 경우의 수 = 2자리에서 ( 0이 오는 경우의 수 + 1이 오는 경우의 수 + 2가 오는 경우의 수 ) 

728x90
반응형