알고리즘/백준

[백준] 11726번: 2×n 타일링 (JavaScript, NodeJS)

정현수 2022. 2. 5. 22:38
반응형

문제

2×n 크기의 직사각형을 1×2, 2×1 타일로 채우는 방법의 수를 구하는 프로그램을 작성하시오.

아래 그림은 2×5 크기의 직사각형을 채운 한 가지 방법의 예이다.

입력

첫째 줄에 n이 주어진다. (1 ≤ n ≤ 1,000)

출력

첫째 줄에 2×n 크기의 직사각형을 채우는 방법의 수를 10,007로 나눈 나머지를 출력한다.

예제 입력 1 복사

2

예제 출력 1 복사

2

예제 입력 2 복사

9

예제 출력 2 복사

55

정답 풀이

const path = process.platform === "linux" ? "/dev/stdin" : "input.txt"; // 리눅스로 테스트할 땐 따로 설정해주어야 합니다.
const [n] = require("fs")
  .readFileSync(path)
  .toString()
  .trim()
  .split("\n")
  .map(Number);

function solution(n) {
  const memo = [...Array(1000)];

  memo[0] = 1;
  memo[1] = 1;

  for (let i = 2; i < n + 1; i += 1) {
    memo[i] = (memo[i - 1] + memo[i - 2]) % 10007;
  }

  console.log(memo[n]);
}

solution(n);
⭐ 문제 핵심 아이디어 ⭐
1. DP
반응형