Algorithm/Algorithm Problem

백준 2133 타일 채우기(DP)

땅지원 2022. 12. 23. 14:34
 

2133번: 타일 채우기

3×N 크기의 벽을 2×1, 1×2 크기의 타일로 채우는 경우의 수를 구해보자.

www.acmicpc.net

 

 

3 x 2 일땐 이렇게 총 3가지가 나온다

 

1x2. 2x1로만 타일을 만들어야하기 때문에 홀수개의 타일의 경우는 채울 수 없으므로 N이 홀수일 땐 불가하고

 

이런식으로 이어갈텐데

 

N = 4부터 가운데에 영향을 주는 애들이 하나씩 생기기 시작한다. 이런 경우를 모두 찾아서 더해주면 된다

for (int i = 4; i < 31; i+=2) {
    dp[i] = dp[i-2] * 3;
    for (int j = i-4; j >=0 ; j-=2) {
        dp[i] += dp[j] * 2;
    }
}