(백준) 2133호: 타일 채우기 – (Python/Python)


문제

https://www.acmicpc.net/problem/2133

2133호: 타일 채우기

3×N 벽이 2×1 및 1×2 타일로 채워지는 경우의 수를 구해 봅시다.

www.acmicpc.net

3×N 벽이 2×1 및 1×2 타일로 채워지는 경우의 수를 구해 봅시다.

입력

첫 번째 줄은 N(1 ≤ N ≤ 30)을 제공합니다.

인쇄

첫 번째 줄에 사례 수를 인쇄합니다.

암호

import sys
input=sys.stdin.readline

n=int(input())
dp=(0 for _ in range(31))
dp(2)=3
for i in range(4,n+1,2):
    dp(i)=3*dp(i-2)+(sum(dp(:i-2))+1)*2

print(dp(n))

문제 해결

https://kosaf04pyh.236

(알고리즘 문제) 백준 2133 – 타일 채우기

https://www.acmicpc.net/problem/2133 No. 2133: 타일 채우기 문제 3×N 벽이 2×1 및 1×2 타일로 채워지는 경우의 수를 구하십시오. N(1 ≤ N ≤ 30)은 첫 번째 입력 라인에 제공됩니다. 출력 첫 줄의 경우 수

kosaf04pyh.tistory.com

이 솔루션을 본 후 재귀 공식을 설정하고 DP에서 해결했습니다. (솔루션 참조: https://kosaf04pyh.236)





F(N) = ( F(N – 2) * 3 ) + ( F(N – 4) * 2 ) + ( F(N – 6) * 2) + ( F(N – 8) * 2 ) + . .. + ( 에프(0) * 2 )