[Node.js_4기] 코드카타 : 멀리뛰기 (24/03/14)

2024. 3. 14. 13:31공부/코테준비

목차

 

1. 문제

2. 시도

3. 결과

4. 배운점

 

1. 문제 

 

코딩테스트 연습 - 멀리 뛰기 | 프로그래머스 스쿨 (programmers.co.kr)

<문제 설명>

효진이는 멀리 뛰기를 연습하고 있습니다. 효진이는 한번에 1칸, 또는 2칸을 뛸 수 있습니다. 칸이 총 4개 있을 때, 효진이는
(1칸, 1칸, 1칸, 1칸)
(1칸, 2칸, 1칸)
(1칸, 1칸, 2칸)
(2칸, 1칸, 1칸)
(2칸, 2칸)
의 5가지 방법으로 맨 끝 칸에 도달할 수 있습니다. 멀리뛰기에 사용될 칸의 수 n이 주어질 때, 효진이가 끝에 도달하는 방법이 몇 가지인지 알아내, 여기에 1234567를 나눈 나머지를 리턴하는 함수, solution을 완성하세요. 예를 들어 4가 입력된다면, 5를 return하면 됩니다.

 

 

2. 시도 

 

function solution(n) {
    let count = 0;
    let way = [1,2]
    let how = []
    let sum = how.reduce((a,b)=>a+b)
    
    while(sum!=5){
        // answer ++
        console.log(1)
        break
    }
    return count
}

for문을 돌려서 횟수를 ++ 하면 되겠지 하면서 시도해 보던 중에, 
[JS] 프로그래머스 - 멀리뛰기 (tistory.com)

해당 글을 볼 수 있었다. 

정리하자면, 해당 문제의 답은 [0,1,2]로 시작되는 피보나치 수열이라는 것이다...

function solution(n) {
    const answer = [0,1,2]
    for(let i=3;i<=n;i++){
        answer[i]=(answer[i-1]+answer[i-2])%1234567
    }
  return answer[n];
}

 

3. 결과 

 

테스트 1 통과 (0.03ms, 33.4MB)
테스트 2 통과 (0.03ms, 33.5MB)
테스트 3 통과 (0.05ms, 33.6MB)
테스트 4 통과 (0.05ms, 33.5MB)
테스트 5 통과 (0.05ms, 33.4MB)
테스트 6 통과 (0.06ms, 33.4MB)
테스트 7 통과 (0.11ms, 33.6MB)
테스트 8 통과 (0.07ms, 33.4MB)
테스트 9 통과 (0.08ms, 33.4MB)
테스트 10 통과 (0.10ms, 33.4MB)
테스트 11 통과 (0.17ms, 33.5MB)
테스트 12 통과 (0.29ms, 33.5MB)
테스트 13 통과 (0.15ms, 33.4MB)
테스트 14 통과 (0.19ms, 33.5MB)
테스트 15 통과 (0.16ms, 33.5MB)
테스트 16 통과 (0.18ms, 33.5MB)

 

4. 배운점 

 

이번 문제는 문제에서 보여준 로직이 아니라 테스트케이스의 경향에서 정답을 찾아내야 했던 문제였습니다.

lv2에 올라오고 부터는 혼자서 푸는게 버거워지고 있습니다.