코딩테스트
[JS] 연습문제 > 멀리 뛰기
차차한
2022. 9. 14. 16:27
/*
* 1 칸을 뛰는 방법 = 1 가지
* 2 칸을 뛰는 방법 = 2 가지
* (n+2 칸을 뛰는 방법) = (n+1 칸을 뛰는 방법) + (n 칸을 뛰는 방법)
* f_1 = 1, f_2 = 2 인 피보나치 수열
*
*/
function solution(n) {
var arr = [0,1,2];
for(var i = 3; i <= n; i++){
arr[i] = (arr[i-2] + arr[i-1])%1234567;
}
return arr[n];
}
이번 문제의 핵심은 피보나치 수열이다.
1칸을 뛰는 방법은 (1칸)으로 1가지가 있고, 2칸을 뛰는 방법은 (1칸,1칸),(2칸)으로 2가지가 있다.
3칸을 뛰는 방법은 (1칸,1칸,1칸),(1칸,2칸),(2칸,1칸)으로 3가지..4칸을 뛰는 방법은 5가지다.
N+2칸을 뛰는 방법 = N+1 칸 방법 + N+2칸 방법이므로 피보나치 수열을 이용해 문제를 풀 수 있다.
효진이가 뛸 수 있는 방법이 1칸, 2칸인데 편의를 위해 0을 0인덱스 자리에 추가해준다.
arr의 3번 인덱스부터 값을 추가해주면 되니 i는 3부터 시작한다.