11726번: 2×n 타일링

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

www.acmicpc.net

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

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

 

입력

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

 

출력

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

 

코드

import sys
input = sys.stdin.readline

n = int(input())
solution = [0]*(n+1)

if n == 1:
    print(1)
elif n == 2:
    print(2)
else:
    solution[1] = 1
    solution[2] = 2
    for i in range(3, n+1):
        solution[i] = (solution[i-1] + solution[i-2]) % 10007
    print(solution[n])

 

2 x N 크기의 직사각형을 채울 수 있는 방법의 수는

2 x ( N-2 ) 크기의 직사각형을 채우는 경우의 수에 1 x 2 크기의 직사각형 2개를 붙이는 경우

+

2 x ( N-1 ) 크기의 직사각형을 채우는 경우의 수에 2 x 1 크기의 직사각형 1개를 붙이는 경우

이다.

 

+ Recent posts