2×n 크기의 직사각형을 1×2, 2×1 타일로 채우는 방법의 수를 구하는 프로그램을 작성하시오.
첫째 줄에 n이 주어진다. (1 ≤ n ≤ 1,000)
첫째 줄에 2×n 크기의 직사각형을 채우는 방법의 수를 10,007로 나눈 나머지를 출력한다.
1개로 만들 수 있는 케이스는 1가지
2개로 만들 수 있는 케이스는 2가지
3개로 만들 수 있는 케이스
아래와 같으므로,
memo[i] = memo[i - 1] + memo[i - 2] 와 같다.
const readline = require("readline");
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout,
});
rl.on("line", (line) => {
input = parseInt(line);
rl.close();
});
rl.on("close", () => {
let memo = {
1: 1,
2: 2,
};
for (let i = 3; i <= input; i++) {
memo[i] = (memo[i - 1] + memo[i - 2]) % 10007;
}
console.log(memo[input]);
});