Python : 파도반 수열(재귀,DP)
문제
풀이
- 수열에서 규칙을 찾아 답을 구현하는 문제
- 그림을 잘 보면
2 = 1+1
3 = 1+2
4 = 2+2
...
이런식으로 증가한다. 이 값은 문제에서 주어진 삼각형들의 값이다. 이를 통해
(n>3) An = An-3 + An-2 로 정의할 수 있다. 재귀로 풀 것이기 때문에 시간복잡도가 뭉개지는 것을 대비해서 DP배열을 만들고 한번 계산한 값은 바로 꺼내서 쓸 수 있도록 하자!
전체코드
dp = [0] * 101
dp[1], dp[2], dp[3] = 1, 1, 1
def sol(x):
if dp[x] != 0:
return dp[x]
else:
dp[x] = sol(x - 3) + sol(x - 2)
return dp[x]
t = int(input())
for i in range(t):
n = int(input())
print(sol(n))
Author And Source
이 문제에 관하여(Python : 파도반 수열(재귀,DP)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@donsco/Python-파도반-수열재귀DP저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)