문제
앞에놈 앞에놈 더하면 뒤에놈이 나오는 수열. 이렇게 말하면 뭔 소린지 모르겠다고? 그럼 예시를 보자.
0,1,1,2,3,5,8,13,21,37,…
1항이 0, 2항이 1일 때 3항은 0+1=1이다. 그리고 4항은? 2항이 1, 3항이 1이니까 1+1=2. 즉, 첫번째와 두번째를 제외한 피보나치 수열의 일반항은 F(n) = F(n-1) + F(n-2)가 된다.
풀이
def fibonacci(n):
if n == 0:
return 0
elif n == 1:
return 1
else:
return fibonacci(n-2) + fibonacci(n-1)
기본 로직은 이거. 예시에는 0번째가 0이라고 나와있는데 왜 0번째부터인지는 모르겠지만 아무튼 그렇다. 0번째와 1번째가 각각 0, 1이니까 그것만 정의해주고 들어가면 된다.
import sys
def fibonacci(n):
if n == 0:
return 0
elif n == 1:
return 1
else:
return fibonacci(n-2) + fibonacci(n-1)
N = int(sys.stdin.readline())
print(fibonacci(N))
아, 입출력 빼먹으면 틀린다.
'BOJ > [BOJ] Python' 카테고리의 다른 글
백준 4153번 풀이 (0) | 2022.08.19 |
---|---|
백준 1002번 풀이 (0) | 2022.08.19 |
백준 10872번 풀이 (0) | 2022.08.19 |
백준 3053번 풀이 (0) | 2022.08.19 |
백준 3009번 풀이 (0) | 2022.08.19 |