백준 알고리즘 No.10870 피보나치 수 5

문제

피보나치 수는 0과 1로 시작한다. 0번째 피보나치 수는 0이고, 1번째 피보나치 수는 1이다. 그 다음 2번째 부터는 바로 앞 두 피보나치 수의 합이 된다.

이를 식으로 써보면 Fn = Fn-1 + Fn-2 (n ≥ 2)가 된다.

n이 주어졌을 때, n번째 피보나치 수를 구하는 프로그램을 작성하시오.

입력

첫째 줄에 n이 주어진다. n은 20보다 작거나 같은 자연수 또는 0이다.

출력

첫째 줄에 n번째 피보나치 수를 출력한다.




체감 난이도: ★

이 문제는 소수 문제 정도의 난이도였다. 굉장히 쉽게 풀렸던 문제..

Code

num = int(input())
f_list = [0, 1]     # 0번째, 1번째 피보나치 수는 미리 넣어둠

for i in range(2, num+1):
    new = f_list[i-1] + f_list[i-2]     # 피보나치 공식
    f_list.append(new)

print(f_list[num])      # n번째 피보나치 수 출력

Solution

피보나치 공식을 활용해 다음 피보나치 수를 리스트에 추가하는 것을 반복하여 “수열”을 만든 다음,
입력받은 num번 요소를 출력 (0번째 피보나치 수와 1번째 피보나치 수는 미리 리스트에 넣어두었다.)

append(x) vs extend(iterable)

  • appendextend리스트에 요소를 추가하는 파이썬 리스트 메서드
  • append는 x 하나의 요소를 추가
  • extend는 다른 리스트의 모든 요소를 현재 리스트에 개별적으로 추가
# append(x)
list1 = [1, 2, 3]
list2 = [4, 5, 6]
list1.append(list2)
print(list1)

>> [1, 2, 3, [4, 5, 6]]
# extend(iterable)
list1 = [1, 2, 3]
list2 = [4, 5, 6]
list1.extend(list2)
print(list1)

>> [1, 2, 3, 4, 5, 6]


혹시 더 좋은 알고리즘 풀이가 있다면 언제든 댓글로 알려주세요 😃