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))
'Algorithm' 카테고리의 다른 글
백준 알고리즘 파이썬(Python) 14501번 퇴사 (0) | 2021.08.30 |
---|---|
백준 알고리즘 파이썬(Python) 10972번 다음 순열 (0) | 2021.08.25 |
Python(파이썬) 알고리즘 자료구조 기초 (스택, 큐) (0) | 2021.08.19 |
백준 알고리즘 파이썬(Python) 1793번 타일링 (0) | 2021.08.17 |
백준 알고리즘 파이썬(Python) 10815번 숫자카드 (0) | 2021.08.05 |