한 걸음씩

[백준][python] 10870 피보나치 수 5 본문

BOJ

[백준][python] 10870 피보나치 수 5

winter17 2023. 2. 15. 21:24

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

 

10870번: 피보나치 수 5

피보나치 수는 0과 1로 시작한다. 0번째 피보나치 수는 0이고, 1번째 피보나치 수는 1이다. 그 다음 2번째 부터는 바로 앞 두 피보나치 수의 합이 된다. 이를 식으로 써보면 Fn = Fn-1 + Fn-2 (n ≥ 2)가

www.acmicpc.net

풀이 과정

1. 입력받은 수가 10이라고 가정하면 0~10까지 리스트에 저장

2. for문을 num 리스트로 돌려서 나오는 값이 0과 1이라면 바로 fib리스트에 저장하고

3. 나오는 값이 2 이상이라면 fib에 먼저 들어간 0과 1의 값을 더해서 복리처럼 계산해주면 되는데 

i = 5 라면 5의 피보나치 수는 5이다. f4 + f3 즉 2 + 3 [0, 1, 1, 2, 3, 5,....]

4. 3번의 과정을 n만큼 반복하고 인덱싱을 통해서 -1 위치를 출력하면 끝

n = int(input())

num = [i for i in range(n+1)]

fib = []
for i in num:
    if i == 0:
        fib.append(i)
    elif i == 1:
        fib.append(i)
    elif i >= 2:
        fib.append(fib[i-1] + fib[i-2])
print(fib[-1])

리뷰

피보나치 수가 뭔지 몰라서 [0,1,2,3,4,5,6,7,8,9,10] 이렇게 있을 때 해당 값의 한 칸 앞과 두 칸 앞의 합을 구하는 건 줄 알았는데

그때그때 생성되는 수의 합을 구하는 게 피보나치 수였다

규칙만 이해하면 어려운 문제는 아니다

'BOJ' 카테고리의 다른 글

[백준][python] 1427 소트인사이드  (0) 2023.02.15
[백준][python] 2587 대표값2  (0) 2023.02.15
[백준][python] 2240 별 찍기 - 3  (0) 2023.02.14
[백준][python] 25305 커트라인  (0) 2023.02.13
[백준][python] 2588 곱셈  (0) 2023.02.12