• toc {:toc}

๋ฌธ์ œ ํ™•์ธํ•˜๊ธฐ

ํ’€์ด

์†์œผ๋กœ ๊ฒฝ์šฐ์˜ ์ˆ˜๋ฅผ ๊ตฌํ•ด๋ณด๊ณ  ๊ทœ์น™์„ฑ์„ ์ƒ๊ฐํ•ด๋ณธ๋‹ค.

  • 3x2์˜ ๊ฒฝ์šฐ

image

๋‹ค์Œ์˜ 3๊ฐ€์ง€ ๊ฒฝ์šฐ๊ฐ€ ์กด์žฌํ•œ๋‹ค.

  • 3x4์˜ ๊ฒฝ์šฐ

image

d์˜ ์™ผ์ชฝ ํฐ ์ง์‚ฌ๊ฐํ˜•์—์„œ 3๊ฐ€์ง€ ๊ฒฝ์šฐ, ์˜ค๋ฅธ์ชฝ์—์„œ 3๊ฐ€์ง€ ๊ฒฝ์šฐ๊ฐ€ ์žˆ์œผ๋ฏ€๋กœ 3x3 = 9
e์™€ ๊ฐ™์ด ์ƒˆ๋กœ์šด ๊ฒฝ์šฐ 2๊ฐ€์ง€ ์กด์žฌํ•˜๋ฏ€๋กœ 9+2 = 11

  • 3x6์˜ ๊ฒฝ์šฐ

image

f์—์„œ ์™ผ์ชฝ ํฐ ์ง์‚ฌ๊ฐํ˜•์€ 11๊ฐ€์ง€์˜ ๊ฒฝ์šฐ๋ฅผ ๋„ฃ์„ ์ˆ˜ ์žˆ๊ณ , f ์˜ค๋ฅธ์ชฝ ๋ถ€๋ถ„์€ 3๊ฐ€์ง€ ๊ฒฝ์šฐ์˜ ์ˆ˜๊ฐ€ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— 11x3 = 33
f์˜ ๊ฒฝ์šฐ๋ฅผ ์…€ ๋•Œ a, b, c ์˜ ๊ตฌ์กฐ๋กœ ์ด๋ฃจ์–ด์ง„ ๊ฒฝ์šฐ์˜ ์ˆ˜๋ฅผ ํ™•์ธํ–ˆ์œผ๋‚˜, e์˜ ๊ฒฝ์šฐ์˜ ์ˆ˜๋Š” ์ ˆ๋ฐ˜๋งŒ ํ™•์ธํ•œ ์…ˆ์ด๊ธฐ ๋•Œ๋ฌธ์— e์˜ ๊ฒฝ์šฐ๊ฐ€ ์˜ค๋ฅธ์ชฝ์— ์œ„์น˜ํ•œ ๊ฒฝ์šฐ๋„ ํ™•์ธํ•ด์ค˜์•ผ ํ•œ๋‹ค.

์ฐจ๊ทผ์ฐจ๊ทผ ์ƒ๊ฐํ•ด๋ณด์ž. f์˜ ๊ฒฝ์šฐ์—์„œ e์˜ ๊ฒฝ์šฐ๋ฅผ ๋นผ๊ณ  ์ƒ๊ฐํ•ด๋ณด์ž.
๋จผ์ €, e์˜ ๊ฒฝ์šฐ๋ฅผ ์ œ์™ธํ•˜๊ณ  a, b, c์˜ ๊ฒฝ์šฐ๋งŒ ์ƒ๊ฐํ•ด๋ณด๋ฉด d์˜ ๊ฒฝ์šฐ์˜ ์ˆ˜(3x3)์— f์˜ ์˜ค๋ฅธ์ชฝ 6๊ฐœ์˜ ์ •์‚ฌ๊ฐํ˜•์—์„œ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋Š” ๊ฒฝ์šฐ์˜ ์ˆ˜ 3๊ฐœ๋ฅผ ๊ณฑํ•ด a, b, c ์˜ ๋ชจ์–‘๋งŒ ์ƒ๊ฐํ•˜๋ฉด 3x3x3 = 27 ๊ฐœ์˜ ๊ฒฝ์šฐ์˜ ์ˆ˜๋ฅผ ํ™•์ธํ–ˆ๋‹ค.

๋‹ค์Œ, e์˜ ๊ฒฝ์šฐ์˜ ์ˆ˜๋ฅผ ์ƒ๊ฐํ•ด๋ณด์ž. e์˜ ๋ชจ์–‘์ด ๋‚˜์˜ฌ ์ˆ˜ ์žˆ๋Š” ๊ฒฝ์šฐ์˜ ์ˆ˜๋Š” ใ…ก๋ชจ์–‘์ด ์œ„์— ์œ„์น˜ํ•œ ๊ฒฝ์šฐ, ์•„๋ž˜์— ์œ„์น˜ํ•œ ๊ฒฝ์šฐ 2๊ฐ€์ง€์ด๊ณ , g์˜ ๊ฒฝ์šฐ์—์„œ ์™ผ์ชฝ์—๋Š” a, b, c 3๊ฐ€์ง€ ๊ฒฝ์šฐ๊ฐ€ ๋‚˜์˜ฌ ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— 3x2 ๋กœ ์…€ ์ˆ˜ ์žˆ๋‹ค. ์ถ”๊ฐ€๋กœ, e์˜ ๋ชจ์–‘์ด g์˜ ์˜ค๋ฅธ์ชฝ ๋์— ์œ„์น˜ํ•  ์ˆ˜๋„ ์žˆ๊ณ , ์™ผ์ชฝ ๋์— ์œ„์น˜ํ•  ์ˆ˜๋„ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— 3x2x2 = 12 ๊ฐ€ ๋œ๋‹ค. ๋•Œ๋ฌธ์— f์—์„œ 11x3์˜ ์˜๋ฏธ๋Š” (a, b, c์˜ ๋ชจ์–‘์„ ์‚ฌ์šฉํ•œ ๊ฒฝ์šฐ์˜ ์ˆ˜) + (g์˜ ๊ฒฝ์šฐ์˜ ์ˆ˜ / 2) ์ธ ์…ˆ์ด๋‹ค.

์ถ”๊ฐ€๋กœ h์˜ ์ƒˆ๋กœ์šด ๊ฒฝ์šฐ 2๊ฐ€์ง€๊ฐ€ ์กด์žฌํ•œ๋‹ค.

๋•Œ๋ฌธ์— ์ตœ์ข…์ ์œผ๋กœ 11x3 + 3x2 + 2 = 41์ด๋‹ค.

์ด์ œ 3x2, 3x4, 3x6์˜ ๊ทœ์น™์„ฑ์„ ์ƒ๊ฐํ•ด๋ณด๋ฉด ์•„๋ž˜์ฒ˜๋Ÿผ ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค.

dp[0] = 1;
dp[2] = dp[2-2] * 3;
dp[4] = dp[4-2] * 3 + dp[4-4] * 2;
dp[6] = dp[6-2] * 3 + dp[6-4] * 2 + dp[6-6] * 2;
#include <bits/stdc++.h>
using namespace std;
#define endl '\n'
 
int dp[33];
 
int main(){
    ios::sync_with_stdio(false);
    cin.tie(0);
 
    int n;
 
    cin >> n;
 
    if(n % 2 == 1){
        cout << 0 << endl;
        exit(0);
    }
    dp[0] = 1;
    for(int i=2; i<=n; i+=2){
        for(int j=2; j<=i; j+=2){
            int first = i-(i-j), factor;
            if(first == 2) factor = 3;
            else factor = 2;
            dp[i] += dp[i-j] * factor;
        }
    }
 
    cout << dp[n] << endl;
 
    return 0;
}