본문 바로가기

알고리즘/Lv. 2

프로그래머스 12914 멀리 뛰기 자바스크립트 풀이

728x90

난이도 Lv. 4

풀이일 : 2410244

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

 

프로그래머스

SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr


문제


아이디어

0 1 2 3 4 5
방법 수 0 1 2 3 5 8
  • 3부터는 (n-1) + (n-2) 형태로 방법의 수가 증가한다
  • dp로 방법의 수를 더해나가자
  • 1234567로 나눈 나머지를 기록하여 숫자가 커지지 않게 조절하자

풀이

function solution(n) {
    var answer = 0;
    let dp = []
    
    for (let i = 0; i < n + 1; i++) {
        if (i < 2) {
            dp[i] = i + 1;
        } else {
            dp[i] = (dp[i-1] + dp[i-2]) % 1234567
        }
    }
    answer = dp[n-1];
    
    return answer;
}
  • dp 크기 별도 설정이 필요하지 않았다
  • 반복문을 순회하며, i가 0, 1일 경우 예외 처리로 dp 기록
  • i가 2 이상일 경우, (n-1) + (n-2) 정보를 더해 dp 기록
  • 다만 dp 기록 시, 숫자가 커지는 것을 방지하기 위해 처음부터 1234567로 나누어 기록한다.

느낀점

  • 자바로 푼 문제를 자바스크립트로 다시 푸는 연습 중인데 이상한 데에서 헤맨다. dp 크기 설정하다가 undefined 보고 당황한 후에 고쳤다.
  • 조금 익숙해지면 자스로 바로 문제 풀이를 시작해도 될 것 같다.