카테고리 없음

1,2,3 더하기 – 실버 3

개발쉐발 2023. 1. 4. 13:14
728x90
반응형
N = int(input())

def sol(n):
  if n == 1:
    return 1
  elif n == 2:
    return 2
  elif n == 3:
    return 4
  else:
    return sol(n-1) + sol(n-2) + sol(n-3)

for i in range(N):
  n = int(input())
  print(sol(n))

1 = 1/

2 = 2/

3 = 4/

4 = 7/

5 = 13

 

위의 값은 경우의 수 이며 4와 5를 보면 해당 값들이 전의 값 3개의 더한 것임을 알 수 있다. 그러므로 점화식을 세워서 풀어 재귀로 풀었으나 하향식을 이용하여 배열에 값을 넣어두는 방식도 얼마든지 이용할 수 있다.

 

T = int(input())

for i in range(T) :
    n = int(input())
    dp = [0]*(n+1)
    if n == 1 :
        print(1)
    elif n == 2 :
        print(2)
    elif n == 3 :
        print(4)
    else :
        dp[1] = 1
        dp[2] = 2
        dp[3] = 4
        for j in range(4,n+1) :
            dp[j] = dp[j-1] + dp[j-2] + dp[j-3]
        print(dp[n])

n이 3보다 클 때 (n>3),f(n)=f(n-1)+f(n-2)+f(n-3)

728x90
반응형