[프로그래머스 level2] 피보나치 수

김예지·2021년 10월 19일
1

문제

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


문제 풀이

코드

function solution(n) {
    let f=[];
    f[0]=0;
    f[1]=1;  
    
    let i=1;
    while(true){
        i++;
        f[i]=(f[i-2]%1234567)+(f[i-1]%1234567);
        if(i===n) return f[i]%1234567;
    }
}

처음에는 아래와 같이 풀었는데 테스트 케이스 7~14가 실패로 나왔다.

function solution(n) {
    let f=[];
    f[0]=0;
    f[1]=1;  
    
    let i=1;
    while(true){
        i++;
        f[i]=(f[i-2])+(f[i-1]);
        if(i===n) return f[i]%1234567;
    }
}


왜그런지 찾아보니까, 변수가 담을 수 있는 값의 범위를 넘어서 그렇다고 한다. 피보나치는 수가 급격하게 커지기 때문에, n의 개수가 크다면 제대로된 값을 담을 수 없게 되는 것이다.
프로그래머스 질문하기에서 어떤 분이 팁을 주셔서, 적용했더니 테케 모두 통과했다.

(A+B)%C=((A%C)+(B%C))%C의 공식을 적용했다.


참고

profile
내가 짱이다 😎 매일 조금씩 성장하기🌱

1개의 댓글

comment-user-thumbnail
2021년 10월 27일

10/27
상황 이해하기(변수가 담을 수 있는 값의 범위 넘는 상황)

답글 달기