프로그래머스 연습문제 - 피보나치 수(Level2, JS)

j_wisdom_h·2023년 1월 30일
0

CodingTest

목록 보기
31/58

프로그래머스 연습문제 - 피보나치 수(Level2, JS)

문제설명


제한사항 & 입출력예


Solution

function solution(n) {
    fibo = [0,1];
    for (let i = 0 ; i < n-1 ; i++){
        fibo.push((fibo[i] + fibo[i+1]) % 1234567 );
    }
    return fibo[fibo.length - 1];
}

테스트케이스 7번 이후부터 계속 실패가 떴다. 왜그럴까?? 질문하기에서 그 답을 찾을 수 있었다.

🚨n이 매우 큰 경우 n번째 피보나치 수는 
언어가 표현할 수 있는 자료형의 범위를 넘어가, 오버플로우가 난다.🚨

예를 들어 47번째 피보나치 수는 2,971,215,073이고, 
이 수는 32비트 정수(ex. int) 범위를 넘어 오버플로우가 발생합니다. 

100,000번째 피보나치 수는 자릿수가 20,000을 넘어가며, 
이는 64비트 정수(ex. long) 범위를 넘어 오버플로우가 발생합니다. 

💡그럼 코드를 어떻게 바꾸면 좋나요? 
모든 단계에서 % 연산을 사용하여, 
모든 연산에서 오버플로우가 일어나지 않게 만들어 주세요
profile
뚜잇뚜잇 FE개발자

0개의 댓글