DP 로 풀었다.
N=2일 때: 3가지
→ dp[2] = 3
N=4일 때: 11가지
dp[2] * 3 = 9가지 (N=2 경우에 N=2 이어붙이기)dp[4] = 9 + 2 = 11N=6일 때: 41가지
dp[4] * 3 = 33가지dp[2] * 2 = 6가지dp[6] = 33 + 6 + 2 = 41dp[n] = dp[n-2] * 3 + 2
+ dp[n-4] * 2
+ dp[n-6] * 2
+ ...
+ dp[2] * 2
→ 짝수 N마다 항상 새로운 특수 2가지가 추가되므로
이전 모든 짝수 항의 * 2 누적합이 필요하다
import java.io.*;
import java.util.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int n = Integer.parseInt(br.readLine().trim());
if (n % 2 != 0) {
System.out.println(0);
return;
}
if (n == 2) { System.out.println(3); return; }
if (n == 4) { System.out.println(11); return; }
int[] dp = new int[n + 1];
dp[2] = 3;
dp[4] = 11;
for (int i = 6; i <= n; i += 2) {
dp[i] = dp[i-2] * 3 + 2;
for (int j = i-4; j >= 2; j -= 2) {
dp[i] += dp[j] * 2;
}
}
System.out.println(dp[n]);
}
}