Algorithm

백준 알고리즘 파이썬(Python) 9095번 1, 2, 3 더하기

🤖 Play with Android 🤖 2021. 8. 24. 14:26
728x90


규칙성을 찾아낸 뒤 DP를 이용하여 풀이하는 문제이다.

우선 숫자가 작은 경우 직접 개수를 세 규칙성을 찾는다.

 

1일 때 ->  1
2일 때 ->  2
3일 때 ->  4
4일 때 ->  7
5일 때 ->  13

이에 따라 점화식은   f(n) = f(n-1) + f(n-2) + f(n-3)  (n>3 인 경우)

 

n = int(input())

def sums(n):
    if n == 1:
        return(1)
    elif n == 2:
        return(2)
    elif n == 3:
        return(4)
    else:
        return sums(n-1) + sums(n-2) + sums(n-3) #규칙을 찾아내는게 중요!
        
for i in range(n):
    a = int(input())
    print(sums(a))