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

2023. 9. 9. 01:14·IT/BOJ 문제정리

문제

피보나치 수는 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 이하인 자연수입니다.

솔루션1: 재귀(런타임에러)

const dp = {0: 0, 1: 1};

function solution(n) {
    if (n in dp) {
        return dp[n];
    }
    dp[n] = (solution(n-1) + solution(n-2)) % 1234567;
    return dp[n];
}
  • 이전에 파이썬으로 풀던 것처럼 재귀를 사용해서 풀려고 시도했다.
  • 테스트케이스 마지막 2개가 런타임 에러가 떴다.
  • 자바스크립트에서 재귀 함수를 과도하게 많이 호출할 경우, "Maximum call stack size exceeded" 런타임 에러가 발생한다.

솔루션2: 반복문(성공)

const dp = [0, 1];

function solution(n) {
    if (n in dp) {
        return dp[n];
    }
    for (let i = 2; i <= n; i++) {
            dp[i] = (dp[i-1] + dp[i-2]) % 1234567;
    }
    return dp[n];
}
  • 그래서 그냥 반복문으로 바꿔서 해결했다.
  • 자바스크립트에서 재귀를 사용하는 것을 주의해야겠다.

'IT > BOJ 문제정리' 카테고리의 다른 글

[프로그래머스][JS] 할인 행사  (0) 2023.09.18
[프로그래머스][JS] N개의 최소공배수  (0) 2023.09.13
[프로그래머스][JS] 숫자의 표현  (0) 2023.09.06
[복기] 2252번: 줄 세우기  (0) 2023.05.17
[복기] 1655번: 가운데를 말해요  (0) 2023.05.15
'IT/BOJ 문제정리' 카테고리의 다른 글
  • [프로그래머스][JS] 할인 행사
  • [프로그래머스][JS] N개의 최소공배수
  • [프로그래머스][JS] 숫자의 표현
  • [복기] 2252번: 줄 세우기
KimCookieYa
KimCookieYa
무엇이 나를 살아있게 만드는가
  • KimCookieYa
    쿠키의 주저리
    KimCookieYa
  • 전체
    오늘
    어제
    • 분류 전체보기 (572)
      • 혼잣말 (87)
      • TIL (2)
      • 커리어 (24)
        • Sendy (21)
        • 외부활동 기록 (2)
      • 프로젝트 (186)
        • 티스토리 API (5)
        • 코드프레소 체험단 (89)
        • Web3 (3)
        • Pint OS (16)
        • 나만무 (14)
        • 대회 (6)
        • 정글 FE 스터디 (16)
        • MailBadara (12)
        • github.io (1)
        • 인공지능 동아리, AID (5)
        • 졸업과제 (18)
        • OSSCA 2024 (1)
      • 크래프톤 정글 2기 (80)
      • IT (167)
        • 코딩 (4)
        • CS (18)
        • 에러 (5)
        • 블록체인 (23)
        • Front-End (38)
        • 알고리즘&자료구조 정리 (3)
        • 코딩테스트 (3)
        • BOJ 문제정리 (41)
        • WILT (12)
        • ML-Agents (4)
        • 강화학습 (1)
        • Android (0)
        • LLM (2)
      • 전공 (1)
        • 머신러닝 (1)
      • 자기계발 (20)
        • 빡공단X베어유 (2)
        • 독서 (15)
  • 블로그 메뉴

    • 홈
    • 방명록
    • Github
    • Velog
    • 관리
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    사이드프로젝트
    프로그래머스
    pintos
    numpy
    Pint OS
    블록체인
    위상정렬
    MailBadara
    react
    크래프톤정글
    머신러닝
    OS
    Flutter
    RNN
    알고리즘
    니어프로토콜
    핀토스
    코드프레소
    JavaScript
    NEAR Protocol
    docker
    리액트
    나만무
    글리치해커톤
    파이썬
    자바스크립트
    딥러닝
    해커톤
    졸업과제
    부산대
  • hELLO· Designed By정상우.v4.10.3
KimCookieYa
[프로그래머스][JS] 피보나치 수
상단으로

티스토리툴바