본문 바로가기
Programing/프로그래머스 오답노트

피보나치 수열

by yooom 2023. 9. 18.
문제 설명
피보나치 수는 F(0) = 0, F(1) = 1일 때, 1 이상의 n에 대하여 F(n) = F(n-1) + F(n-2) 가 적용되는 수 입니다.
예를들어
F(2) = F(0) + F(1) = 0 + 1 = 1
F(3) = F(1) + F(2) = 1 + 1 = 2
F(4) = F(2) + F(3) = 1 + 2 = 3
F(5) = F(3) + F(4) = 2 + 3 = 5
와 같이 이어집니다. 2 이상의 n이 입력되었을 때, n번째 피보나치 수를 1234567으로 나눈 나머지를 리턴하는 함수, solution을 완성해 주세요.

 

풀이
def fibo(n):
    if n <= 2:
        return 1
    num = pibo(n-1) + pibo(n-2)
    return num

def solution(n):
    return pibo(n) % 1234567

재귀함수로 풀어봤다. 런타임에러 +  시간초과, 어디서인가 문제가 있다.

def fibo(n):
    if n < 2:
        return n

    a, b = 0, 1
    for i in range(n-1):
        a, b = b, a + b

    return b % 1234567

이렇게 단순 무식 덧셈으로 구해도 된다.

def solution(n):
    arr = [0,1]			
    for i in range(2,n+1):	
        arr.append(answer[i-1] + answer[i-2])

    return answer[-1] % 1234567

단순하게 풀면 정답이 나온다.

 

출처

https://school.programmers.co.kr/learn/courses/30/lessons/12945

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

728x90

댓글