링크 : https://www.acmicpc.net/problem/10826
문제
그냥 간단한 DP다
n은 10000까지 주어지는데, 일반적인 방법으로 피보나치수를 구하게 되면 F(10000) = F(9999) + F(9998) = F(9998) + F(9997) + F(9997) + F(9996) = …
이런식으로 쭉쭉쭉 늘어가면서 결국 메모리제한256MB를 넘길것이다. 그래서 우린 DP를 해야한다
dp[2] = dp[1] + dp[0]
코드
import sys
input =sys.stdin.readline
n= int(input().strip())
dp = [ 0 for _ in range(n+1)]
dp[0] = 0
if n < 2 :
print(n)
else :
dp[1] = 1
for i in range(2,n+1) :
dp[i] = dp[i-1] + dp[i-2]
print(dp[-1])
'CodingTest' 카테고리의 다른 글
프로그래머스 보석쇼핑 67258 파이썬 (0) | 2022.07.20 |
---|---|
백준 18232 텔레포트정거장 파이썬 (0) | 2022.07.20 |
리트코드 Tapping Rain Water (0) | 2022.07.13 |
백준 2606 바이러스 (0) | 2022.07.13 |
백준 14888 연산자끼워넣기 파이썬 (0) | 2022.07.08 |