알고리즘 풀이/백준
백준 11726번 : 2xn 타일링 (Python)
heheh
2021. 2. 4. 11:52
문제 : www.acmicpc.net/problem/11726
11726번: 2×n 타일링
2×n 크기의 직사각형을 1×2, 2×1 타일로 채우는 방법의 수를 구하는 프로그램을 작성하시오. 아래 그림은 2×5 크기의 직사각형을 채운 한 가지 방법의 예이다.
www.acmicpc.net
풀이
dp에 2x1부터 경우의 수를 입력한 뒤 입력된 수를 참고하여 다음 2xn 크기의 타일링을 계산한다.
현재 주어진 타일로 겹치지 않게 가장 작게 사각형을 채우는 방법은
①세로 타일 하나로 2x1 만들기 ②가로 타일 두개로 2x2 만들기 이다.
ex) 세로 타일 두개로 2x2를 만드는 경우는 ①의 경우에 속하므로 겹치는 경우이다.
따라서 2xn 타일링 경우의 수는 [ 2x(n-1)에 ①을 붙이는 경우 + 2x(n-2)에 ②를 붙이는 경우 ]이다.
n = int(input())
dp = [0,1,2]
for i in range(3,n+1):
dp.append((dp[i-2] + dp[i-1])%10007)
print(dp[n])