알고리즘/백준

[python/2748]피보나치 수2

(ㅇㅅㅎ) 2020. 4. 2. 20:06
728x90
반응형

https://www.acmicpc.net/problem/2748

 

2748번: 피보나치 수 2

문제 피보나치 수는 0과 1로 시작한다. 0번째 피보나치 수는 0이고, 1번째 피보나치 수는 1이다. 그 다음 2번째 부터는 바로 앞 두 피보나치 수의 합이 된다. 이를 식으로 써보면 Fn = Fn-1 + Fn-2 (n>=2)가 된다. n=17일때 까지 피보나치 수를 써보면 다음과 같다. 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597 n이 주어졌을 때, n번째 피보나치 수를

www.acmicpc.net

더보기

내 코드

import sys
 
# 재귀형식으로 풀 경우
# 반복 작업을 하기 때문에 느림
def fibo(n):
    return (n if n < 2 else fibo(n-1+ fibo(n-2))
 
if __name__=='__main__':
    # 빠르게 입력받기 위해서 int(input()) 대신 sys.stdin.readline()을 사용
    N = int(sys.stdin.readline())
    # 리스트 한개를 생성해서 0으로 초기화
    fibo_ = [0]*(N+1)
    # 피보나치 수열에서 1번째는 1이므로 1로 변경(인덱스가 0부터 시작한다고 가정)
    fibo_[1= 1
 
    for i in range(2, N+1):
        # 문제에서 재시한 식을 이용
        fibo_[i] = fibo_[i-1+ fibo_[i-2]
    # 출력
    print(fibo_[-1])
 

 

 

반응형

'알고리즘 > 백준' 카테고리의 다른 글

[python/1904]01타일  (0) 2020.04.09
[python/1003]피보나치 함수  (0) 2020.04.07
[python/14889]스타트와 링크  (0) 2020.03.31
[python/14888]연산자 끼워넣기  (0) 2020.03.28
[python/10996]별 찍기 - 21  (0) 2020.03.23