[Python] 백준 알고리즘 온라인 저지 10870번 피보나치 수 5
https://www.acmicpc.net/problem/10870
이번 문제도 for문과 재귀 함수를 모두 풀이가 가능하여 전부 풀이해보았다.
- for문 이용한 풀이
n = int(input())
result = []
for i in range(n):
if i < 2:
result.append(1)
else:
result.append(result[i-2] + result[i-1])
if n == 0:
print(0)
else:
print(result[-1])
- 재귀 함수 이용한 풀이
def fibonacci(n):
if n == 0:
return 0
elif n == 1 or n == 2:
return 1
else:
return fibonacci(n - 1) + fibonacci(n - 2)
n = int(input())
print(fibonacci(n))
소소한 예외 처리로 0번째 피보나치 수는 0이므로 0을 출력하게 하였다.
피보나치 수열
피보나치 수열은 위의 그림처럼 Fn = Fn-1 + Fn-2 (n ≥ 2) 식을 이용하여 점점 커지게 된다.
풀이
10번째 피보나치 수를 리스트로 만들면 [0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55] 위의 for문에서는 리스트에 0을 넣지 않고 따로 출력하는 방법을 사용했다. result[-1]로 맨 마지막의 수를 출력하여 문제를 풀이했다.
재귀 함수를 이용한 방법은 이런 리스트를 만들지 않고 n이 0, 1, 2일때의 예외 처리 후 n이 10이라면 9번째 + 8번째 피보나치 함수를 불러와 그 수를 계산하는 방법으로 풀이하였다.
풀이 결과
'알고리즘' 카테고리의 다른 글
백준 2231번 분해합 파이썬 풀이 (0) | 2022.01.09 |
---|---|
백준 2798번 블랙잭 파이썬 풀이 (0) | 2022.01.07 |
백준 11729 하노이 탑 이동 순서 파이썬 풀이 (0) | 2022.01.04 |
백준 2247번 별찍기 - 10 파이썬 풀이 (0) | 2022.01.03 |
10872번 팩토리얼 파이썬 풀이 (0) | 2022.01.01 |