μ --------
μ΄ λ¬Έμ μμ² κ°λ¨ν λ¬Έμ μΌ μ€ μμλλ°, νΈλλ° μμ² μ€λ κ±Έλ Έλ€.
κ·Έλμ λ΄ κ³΅λΆκ³νμ μν₯μ μ£Όκ²λ.. μκ³ λ¦¬μ¦ ν λ¬Έμ νκ³ μ€νλ§ μμ λ€μΌλ €κ³ νλλ° γ γ μ무νΌ
3*n 곡κ°μ 1*2,2*1 νμΌμ μ±μ°λ λ¬Έμ μΈλ°,
nμ΄ νμ μΌλμλ 3*n = 무쑰건 νμ μ΄λ―λ‘, νμΌμ κ°―μκ° μ§μκ°λ°μ μλ μν©μμ νμ곡κ°μ μ±μ°λ κ²μ λΆκ°λ₯νλ―λ‘ nμ΄ νμμΈ κ²½μ°λ μκ°νμ§ μμλ λλ€.
μ΄μ nμ΄ μ§μμΌλ, κ·μΉμ μ°Ύμμ μ νμμ μΈμμΌ νλ€.
λ¨Όμ n=2μΌλ, 3κ°μ§ κ²½μ°μ μκ° λμ€λ κ²μ λꡬλ μ κ²μ΄λ€.
dp[2] = 3 μ μ΄κΈ°κ°μΌλ‘ μ§μ νλ€.
n=4λΆν° κ·μΉμ μ°ΎμμΌ νλ€.
n=4 μΌλ, λ¨Όμ νμͺ½ λλΉ 2μΉΈμ dp[2]λ‘ μ±μ°λ κ²½μ°μμλ§νΌ μ±μΈ μ μκ³ , λ¨μ λλΉ 2μΉΈλ dp[2] κ²½μ°μ μλ§νΌ μ±μΈ μ μλ€.
νμ§λ§, μ€λ₯Έμͺ½ 2κ°μ κ²½μ°μ κ°μ΄ dp[2]*dp[2] κ²½μ°μ ν¬ν¨λμ§ μλ μμΈ κ²½μ°κ° 2κ° λ°μνλ€.
dp[4]= dp[2]*dp[2] + 2 κ° λλ€.
n=6μΌ λ
λ¨Όμ μ€λ₯Έμͺ½ λλΉ 2μΉΈμ dp[2]μ κ²½μ°μ μ λ§νΌ μ±μ°λ©΄ λ¨μ 4μΉΈμ dp[4] κ²½μ°μ μλ§νΌ μ±μΈ μ μλ€.
dp[4] κ²½μ°μ μμ dp[2]*dp[2] κ²½μ°μ μ κΉμ§ ν¬ν¨νλ―λ‘ μ±λ¦½νλ€.
κ·Έλ¦¬κ³ μ€λ₯Έμͺ½ λλΉλ₯Ό dp[4]λ§νΌ μ±μ°κ³ λ¨μ λλΉ 2μΉΈμ dp[2] λ§νΌ μ±μ°λ©΄ μ€λ³΅νλ κ²½μ°μ μκ° λ°μνλ€. μλνλ©΄ μμμ λ§νλ―μ΄ dp[4] κ²½μ°μ μλ dp[2]*dp[2] κ²½μ°μ μλ₯Ό ν¬ν¨νκΈ° λλ¬Έμ΄λ€.
λ¨μ μΈ μλ‘ μμ κ°μ κ²½μ°λ dp[2]*dp[4] μλ ν¬ν¨λκ³ dp[4]*dp[2] κ²½μ°μ μμλ ν¬ν¨λκΈ° λλ¬Έμ΄λ€.
λ°λΌμ dp[4]μμ λ°μν μμΈ κ²½μ°λ₯Ό μ§μ΄λ£μμ λμλ§ μλ‘μ΄ κ²½μ°μ μκ° λ μ μλ€.
κ·Έλ¦¬κ³ n=6μΌ λμλ μμ μμΈκ° 2κ° λ°μνλ€.
μ¦. dp[6]=dp[2]*dp[4] + (dp[4]μμ λ°μνλ μμΈ)*dp[2] + (dp[6]μμ λ°μνλ μμΈ)
μ΅μ’ μ μΌλ‘
dp[n] = dp[2]*dp[n-2] + [ (dp[4]μμ λ°μνλ μμΈ)*dp[n-4] + (dp[6]μμ λ°μνλ μμΈ)*dp[n-6] ............
+(dp[n-2]μμ λ°μνλ μμΈ)*dp[2] ] + (dp[n]μμ λ°μνλ μμΈ)
κ° λκ³ κ° μΌμ΄μ€μμ λ°μνλ μμΈλ νμ 2κ°κ° λμ€λ―λ‘
dp[n]=dp[2]*dp[n-2] +[ 2*( dp[n-4] +dp[n-6] .....+dp[2] ) ] + 2κ° λλ κ²μ μ μ μλ€.
μ μ νμμ μ½λλ‘ λνλ΄λ©΄ μλμ κ°λ€!
import java.util.Arrays;
import java.util.Scanner;
public class No_2133 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int N = scanner.nextInt();
long [] dp = new long [N+2];
dp[2] = 3;
for(int n=4;n<=N;n+=2) {
dp[n]+=dp[n-2]*dp[2];
for(int j=2;j<=n-4;j+=2) {
dp[n]+=2*dp[j];
}
dp[n]+=2;
}
System.out.println(dp[N]);
// System.out.println(Arrays.toString(dp));
}
}