728x90
반응형
https://www.acmicpc.net/problem/2133
2133번: 타일 채우기
3×N 크기의 벽을 2×1, 1×2 크기의 타일로 채우는 경우의 수를 구해보자.
www.acmicpc.net
문제 해결
$ 3 \times N$ 행렬에서 N이 홀수일 경우는 타일을 다 채울 수 없다.
N이 짝수인 것은 명백하고 타일을 채우는 방법은 2X2, 2X4 .... 무척 다양하다.
하지만 다양해도 확실한 것은 짝수로 끝난다는 것이다.
이전 dp와 관련없이 만들어지는 타일 채우는 가지수는 +2가 있다.
따라서 다음과 같이 코드를 짤 수 있다.
CODE
import sys
input = sys.stdin.readline
n = int(input())
dp = [0 for i in range(31)]
dp[2] = 3 # 직접 셈
for i in range(4,31,2):
dp[i] = dp[2]*dp[i-2]
for j in range(4,i,2):
dp[i] += 2*dp[i-j]
dp[i] += 2
print(dp[n])
728x90
반응형
'알고리즘 > [python] 백준 BOJ' 카테고리의 다른 글
[python] 백준 11722 가장 긴 감소하는 부분 수열 (0) | 2022.12.29 |
---|---|
[Python] 백준 13398 연속합 2 (0) | 2022.12.28 |
[python] 백준 9456 스티커 (0) | 2022.12.27 |
[python] 백준 17404 RGB거리2 (0) | 2022.12.26 |
[Python] 백준 11057 오르막 수 (0) | 2022.12.26 |
댓글