https://www.acmicpc.net/problem/14495
유형
다이나믹 프로그래밍
문제
피보나치 비스무리한 수열은 f(n) = f(n-1) + f(n-3)인 수열이다. f(1) = f(2) = f(3) = 1이며 피보나치 비스무리한 수열을 나열하면 다음과 같다.
1, 1, 1, 2, 3, 4, 6, 9, 13, 19, ...
자연수 n을 입력받아 n번째 피보나치 비스무리한 수열을 구해보자!
입력
자연수 n(1 ≤ n ≤ 116)이 주어진다.
출력
n번째 피보나치 비스무리한 수를 출력한다.
소스코드
n = int(input())
dp = [1] * 117
for i in range(4, n+1):
dp[i] = dp[i-3] + dp[i-1]
print(dp[n])
문제풀이
1. n을 입력받는다.
2. 자연수 n의 범위가 n <= 116 이므로 크기가 117이고 1로 된 리스트를 생성한다.
3. i == n이 될 때까지 반복문을 이용하여 순차적으로 값을 구하고 리스트에 저장한다.
4. 해당하는 수를 출력한다
'Koala - 13기 > 코딩테스트 준비 스터디' 카테고리의 다른 글
[백준/Python] 11726번 : 2xn 타일링 (0) | 2024.01.22 |
---|---|
[백준/Python] 14916번: 거스름돈 (0) | 2024.01.22 |
[백준/C++] 14916 거스름돈 (0) | 2024.01.21 |
[백준/C++] 18111번: 마인크래프트 (0) | 2024.01.21 |
[ 백준 / Pyhton ] #1699 제곱수의 합 (0) | 2024.01.20 |