본문 바로가기
알고리즘/프로그래머스

프로그래머스 Lv2 피보나치 수 (python)

by 개발하는 호랑이 2024. 2. 4.

피보나치 수

풀이

처음엔 재귀함수로 시도해 봤으나, 시간도 오래 걸리고, maximum deepth 에러가 생겨서 실패했다.
그래서 while문을 이용해봤고 아래처럼 진행을 했다.
1. F=[0,1,2] 변수를 생성
2. n = 2일 때는 1을 반환시키고 이게 아니라면, while문에 입장
3. i변수를 이용해서 n과 동일해질때의 값을 반환할 수 있게 제약 걸고, while문 내에서는 F.append() 대신 [0], [1], [2]를 계속해서 바꿔주는 방식으로 이용. 이유 append()도 은근히 시간이 걸리는 녀석임
4. while문을 벗어나면 F[2] 즉, n번째가 되는 값을 1234567로 나눈 나머지를 반환. 이때 n번째는 0번째부터 새는 n번째.

def solution(n):
    F = [0, 1, 1]
    if n == 2:
        return 1
    i = 2
    while i < n:
        i += 1
        F[0], F[1] = F[1], F[2]
        F[2] = F[0] + F[1]
        
    return F[2] % 1234567

다른 사람 풀이

아.. 더 쉽게 푼 게 있었다. 똑똑한 청년들이 너무 많다.

def fibonacci(num):
    a, b = 0, 1
    for i in range(num):
        a, b = b, a+b
    return a