출처 : 프로그래머스
문제
피보나치 수는 F(0) = 0, F(1) = 1일 때, 2 이상의 n에 대하여 F(n) = F(n-1) + F(n-2) 가 적용되는 점화식입니다. 2 이상의 n이 입력되었을 때, fibonacci 함수를 제작하여 n번째 피보나치 수를 반환해 주세요. 예를 들어 n = 3이라면 2를 반환해주면 됩니다.
내 풀이
# def fibonacci(num):
# answer = 0
# if num > 2:
# answer = fibonacci(num-1) + fibonacci(num-2)
# else:
# answer = 0 if num == 0 else 1
# return answer
# # 아래는 테스트로 출력해 보기 위한 코드입니다.
# print(fibonacci(3))
def fibonacci(num):
answer = [0, 1]
for i in range(2, num + 1):
answer.append(answer[i-1] + answer[i-2])
return answer[-1]
# 아래는 테스트로 출력해 보기 위한 코드입니다.
print(fibonacci(3))
- 위의 주석 처리된 코드는 재귀 함수를 이용한 피보나치 수 풀이 이다.
- 재귀 함수를 이용한 피보나치 수 풀이는 필요이상의 연산을 많이 하는 방식으로 큰 수가 들어올 경우 매우 느리다.
- 그래서 아래의 반복문 형태로 바꾸어서 풀이 하였다.
다른사람의 풀이
def fibonacci(num):
a, b = 0, 1
for i in range(num):
a, b = b, a+b
return a
# 아래는 테스트로 출력해 보기 위한 코드입니다.
print(fibonacci(3))
배운점
- 파이썬은 튜플을 이용하여
swap
연산이 가능하다. - 파이써닉한 방법에 대해 다시 한번 생각하게 됨.
Comments