티스토리 뷰
728x90
2748번: 피보나치 수 2
피보나치 수는 0과 1로 시작한다. 0번째 피보나치 수는 0이고, 1번째 피보나치 수는 1이다. 그 다음 2번째 부터는 바로 앞 두 피보나치 수의 합이 된다. 이를 식으로 써보면 Fn = Fn-1 + Fn-2 (n ≥ 2)가
www.acmicpc.net
1. 문제 내용
2. 접근 방식
- 다이나믹 프로그래밍(DP)
피보나치를 구하는 가장 일반적인 재귀 함수 방식은 시간 복잡도가 O(2^n)이다. 이 문제에서 n은 90보다 작거나 같은 자연수이므로, 재귀 함수 방식으론 절대 풀 수가 없다. 따라서 작은 문제에서 큰 문제로 차근차근 답을 도출하는 다이나믹 프로그래밍의 상향식 방식을 따라 dp 테이블을 사용하여 피보나치 수를 구한다.
3. 정답 코드
n = int(input())
dp = [0] * 91
dp[0], dp[1] = 0, 1
for i in range(2, n + 1):
if not dp[i]:
dp[i] = dp[i-1] + dp[i-2]
print(dp[n])
728x90
'코딩 테스트 > 백준' 카테고리의 다른 글
[백준] 1260번 DFS와 BFS 파이썬 정답 코드 (0) | 2023.05.21 |
---|---|
[백준] 2606번 바이러스 파이썬 정답 코드 (0) | 2023.05.21 |
[백준] 2775번 부녀회장이 될테야 파이썬 정답 코드 (0) | 2023.05.21 |
[백준] 2869번 달팽이는 올라가고 싶다 파이썬 정답 코드 (0) | 2023.05.14 |
[백준] 2730번 색종이 만들기 파이썬 정답 코드 (0) | 2023.05.14 |