Moon Work

[프로그래머스] 피보나치 수_연습문제 본문

알고리즘

[프로그래머스] 피보나치 수_연습문제

moonkey 2022. 5. 31. 12:33

피보나치 수_연습문제 (level 2)

문제 설명

피보나치 수는 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을 완성해 주세요.

 

제한 사항
  • n은 2 이상 100,000 이하인 자연수입니다.

풀이

피보나치 수는 이전 두개의 값을 더한 값을 현재의 값으로 가지는 수의 연속이기 때문에 값을 더해주는 과정을 반복한다. 다만 숫자가 너무 커질 경우 C언어 같은 경우에서 int의 범위를 넘어가는 경우가 있기 때문에 now에 저장되는 값을 1234567로 나눈 값으로 저장한다. 

function solution(n) {

    let prev1 = 0;
    let prev2 = 1;
    let now;
    for(let i=2;i<=n;i++){
        now = (prev1 + prev2)%1234567;
        prev1 = prev2;
        prev2 = now;
    }
    
    return now%1234567;
}

더 나은 로직 또는 클린 코드를 위한 피드백은 감사히 받겠습니다. 😎