React

11726 2xn 타일링

문제

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

입력

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

출력

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

예제 입력 1

2
Plain Text
복사

예제 출력 1

2
Plain Text
복사

예제 입력 2

9
Plain Text
복사

예제 출력 2

55
Plain Text
복사

My solution

1x2와 2x1 타일을 가지고 규칙을 찾아보면
10007로 나눈 나머지를 반환하고, 자료형 크기 초과를 막기 위해 반복문에서 값을 할당할 때마다 매번 나누는 연산을 해준다.

그림으로 경우의 수 구하면 실수가 있을 수 있지 않나?

규칙 찾는 데 체계적인 접근법이 있나

Code

function solution(i) { const N = i.toString().trim() * 1; const DP = Array.from({ length: N + 1 }, () => 0); DP[1] = 1; DP[2] = 2; for (let i = 3; i <= N; i++) { DP[i] = (DP[i - 1] + DP[i - 2]) % 10007; } console.log(DP[N]); return DP[N]; } describe('2xn 타일링', () => { it('TC1', () => { expect(solution(`2`)).toStrictEqual(2); }); it('TC2', () => { expect(solution(`9`)).toStrictEqual(55); }); });
JavaScript
복사