[프로그래머스]멀리 뛰기(js)

Kyoungmoon Kim·2022년 11월 18일
0

문제 설명

https://school.programmers.co.kr/learn/courses/30/lessons/12914

문제 풀이

  1. 한 칸씩 늘어날 때 마다 반환되는 수열이 피보나치 수열이다.
  2. 피보나치 수열을 구할 때 사용하는 점화식 이용해 문제를 해결했다.

풀이 코드

function solution (n) {
  return fibonacci(n);
}
const fibonacci = (n) => {
  const dp = new Array(n+1).fill(0);
  dp[0] = 1; dp[1] = 1;
  
  for(let i = 2; i <= n; i++)
    dp[i] = (dp[i-1] + dp[i-2]) % 1234567;
  return dp[n];
}

처음 시도했던 풀이코드

  1. 팩토리얼 함수를 정의해 팩토리얼을 이용해 풀려고 시도했다.
  2. 하지만 테스트7번부터 오류가 났고 오류원인은 오버플로우 문제였다.
  3. 결국 오버플로우 문제를 해결하지 못했고 다른 풀이 방식인 피보나치를 이용해 해결했다.
function solution(n) {
    var answer = 0;
    
    
    //팩토리얼 함수
    function factorial(n) {
      let result = 1;
      for (let i = 1; i <= n; i++) {
        result *= i;
       }
      return result;
    }
    if(n==1){
        return 1;
    }
    let c=Math.floor(n/2);
    
    //i는 2의 개수
    for(let i=0;i<=c; i++){
        answer+= factorial(n)/(factorial(i)*factorial(n-i));
        n--;
    }
 
    return answer%1234567;
}```
profile
프론트 개발 공부를 정리한 블로그입니다.

0개의 댓글