문제
2×n 직사각형을 1×2, 2×1과 2×2 타일로 채우는 방법의 수를 구하는 프로그램을 작성하시오.
아래 그림은 2×17 직사각형을 채운 한가지 예이다.

입력
첫째 줄에 n이 주어진다. (1 ≤ n ≤ 1,000)
출력
첫째 줄에 2×n 크기의 직사각형을 채우는 방법의 수를 10,007로 나눈 나머지를 출력한다.
1. 기준이 되는 arr를 만든다. (여기서 [0], [1]는 미리 적어줘야 함)
2. 공식대로 input까지 arr를 채운다.
3. 출력한다.
여기서 2. 의 공식이란 아래와 같다.
예로, 3을 만드는 경우의 수 = ( 1 [1를 만드는 경우의 수] * 2 ) + 3 [2를 만드는 경우의 수] = 5
코드는 아래와 같다.
const fs = require("fs");
const filePath = process.platform === "linux" ? "/dev/stdin" : "input.txt";
let input = fs.readFileSync(filePath).toString().trim();
input = +input;
const standard = [1, 3, 5]
for (let i = 3; i < input; i++) {
standard[i] = (standard[i - 2] * 2 + standard[i - 1]) % 10007;
}
console.log(standard[input - 1])
'백준' 카테고리의 다른 글
[실버] 영화감독 숌_1436번 (0) | 2023.06.17 |
---|---|
[실버] 잃어버린 괄호(1541번)_JS (0) | 2023.01.03 |
[실버] 구간 합 구하기 4 (11659번)_JS (1) | 2022.12.24 |
[실버] 파도반 수열 (9461번)_JS (0) | 2022.12.23 |
[실버] 패션왕 신해빈 (9375번)_JS (0) | 2022.12.23 |