멀리 뛰기 (Level 3)
문제
효진이는 멀리 뛰기를 연습하고 있습니다. 효진이는 한번에 1칸, 또는 2칸을 뛸 수 있습니다. 칸이 총 4개 있을 때, 효진이는
(1칸, 1칸, 1칸, 1칸)
(1칸, 2칸, 1칸)
(1칸, 1칸, 2칸)
(2칸, 1칸, 1칸)
(2칸, 2칸)
의 5가지 방법으로 맨 끝 칸에 도달할 수 있습니다.
멀리뛰기에 사용될 칸의 수 n이 주어질 때, 효진이가 끝에 도달하는 방법이 몇 가지인지 출력하는 jumpCase 함수를 완성하세요.
예를 들어 4가 입력된다면, 5를 반환해 주면 됩니다.
풀이
function jumpCase(num) {
let arr = [1,2];
for ( let i = 2; i < num; i++ ) {
arr.push(arr[i-1]+arr[i-2])
}
return arr[arr.length-1]
}
//아래는 테스트로 출력해 보기 위한 코드입니다.
console.log(jumpCase(4));
내용을 잘 보면 피보나치 수열이란걸 알 수 있고, 재귀함수 대신에 반복문으로 풀어봄.
아마 이게더 빠르지 않나 싶은데 확실히는 모르겠당
다른 사람의 풀이
function jumpCase(num) {
if (num === 1) return 1
if (num === 2) return 2
return jumpCase(num-1) + jumpCase(num-2)
}
재귀함수로 푸는 방법!