본문 바로가기
ps/boj

11727번 Python

by choi-dev 2024. 8. 19.

두번째 타일링 문제이다. 이번엔 2x2 타일이 하나 늘어났다. 예전에 풀었는데 이번엔 제대로 된 점화식을 찾아서 정리해보려고 한다.

 

일단 4까지는 손수 그림을 그리면서 갯수를 찾아냈다. f(4)는 특징이 하나 있다. 위 이미지의 f(4) 그림의 빨간색 부분은 f(3)에서 1x2 타일을 하나 더 붙인셈이다. 즉, f(3)의 갯수를 가지고 있다. 그리고 f(4)의 파란 부분을 보면 f(2)에서 존재하는 타일을 두 번씩 사용했다.

 

즉, 문제의 점화식은

f(i) = 2 * f(i - 2) + f(i - 1)

인 것을 확인할 수 있다.

 

import sys

n = int(sys.stdin.readline())
dp = [0] * 1001
dp[1] = 1
dp[2] = 3

for i in range(3, n + 1):
    dp[i] = 2 * (dp[i - 2]) + dp[i - 1]

print(dp[n])

코드로 구성하면 이렇게 된다.

'ps > boj' 카테고리의 다른 글

10844번 Python  (0) 2024.08.21
9095번 Python  (0) 2024.08.20
11726번 Python  (0) 2024.08.18
1463번 Python  (0) 2024.08.18
10992번 Python  (0) 2024.05.01