가로 길이가 2이고 세로의 길이가 1인 직사각형모양의 타일이 있습니다. 이 직사각형 타일을 이용하여 세로의 길이가 2이고 가로의 길이가 n인 바닥을 가득 채우려고 합니다. 타일을 채울 때는 다음과 같이 2가지 방법이 있습니다.
예를들어서 n이 7인 직사각형은 다음과 같이 채울 수 있습니다.
직사각형의 가로의 길이 n이 매개변수로 주어질 때, 이 직사각형을 채우는 방법의 수를 return 하는 solution 함수를 완성해주세요.
n | result |
---|---|
4 | 5 |
이 문제는 1과 2부터 시작하는 피보나치 수열 문제이다.
피보나치 수열은 각 숫자가 직전의 두 숫자의 합인 수열이다.
예를 들어, 다음 배열은 피보나치 수열의 첫 10개 수를 나타낸다.
[0, 1, 1, 2, 3, 5, 8, 13, 21, 34]
function solution(n) {
let a = 1;
let b = 2;
let temp;
if (n < 3) return n;
for(let i = 3; i <= n; i++) {
temp = b;
b = (a + b) % 1000000007;
a = temp;
}
return b
}
function solution(n) {
const arr = [0, 1, 2];
for (let i = 3; i <= n; i++) {
arr[i] = (arr[i - 2] + arr[i - 1]) % 1000000007;
}
return arr[n];
}