Lv.1 피보나치 수

출처 : 프로그래머스

문제

피보나치 수는 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