즉 M x 3 크기의 타일의 경우의 수가 있다면, 다음 (M + 2) x 3 크기의 타일의 경우의 수는 이에 3을 곱하여 더해 줄 수 있다(경우의 수가 3가지이므로)
또한, 2n x 3 타일이 오는 경우는 크게 2가지이다.
n이 아무리 커지더라도 이 패턴이 반복된다. 앞선 경우와 같이 각 경우의 수에 2를 곱하여 더해주면 다음 경우의 수를 업데이트 할 수 있다. 이런 식으로 모든 짝수에 대해 고려하면 쉽게 풀이 가능하다. 물론, 세로 면적이 넓어지거나 타일 형태가 바뀌면 이런 패턴화가 좀 더 복잡해지고, 풀이 역시 이런 엣지 케이스를 고려해야 하다 보니 더 난도가 올라간다.
풀이 코드
N = int(input())
dp = [0]*(N+1)
dp[0] = 1
for i in range(2, N+1, 2) :
for j in range(2, i+1, 2) :
mul = 3 if j == 2 else 2
dp[i] += dp[i-j] * mul
print(dp[-1])