코딩테스트

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

셈인 2023. 9. 3. 12:36

📄 문제

Lv 2. [연습 문제] 피보나치 수

 

프로그래머스

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

programmers.co.kr


🔍 문제 접근

💡 문제에서 1234567과 같은 숫자로 나눈 나머지를 출력하라는 이유 = int로 표현할 수 있는 범위를 넘어서기 때문

참고 링크

 


 

📝 문제 풀이

처음에 재귀함수로 풀었다가 시간 초과와 런타임 에러를 맞고, for 문으로 방법을 바꿨다.

// 문제의 재귀함수
function solution(n) {
    if (0 === n) {
        return 0;
    }

    if (1 === n || 2 === n) {
        return 1;
    }

    return solution((n - 1) % 1234567) + solution((n - 2) % 1234567);
}

// for문을 사용한 풀이
function solution(n) {
    let sum = 0;
    let prev = 0;
    let next = 1;

    for (let i = 1; i < n; i++) {
        sum = (prev + next) % 1234567;
        prev = next;
        next = sum;
    }

    return sum;
}