๐ ๋ฌธ์
3×N ํฌ๊ธฐ์ ๋ฒฝ์ 2×1, 1×2 ํฌ๊ธฐ์ ํ์ผ๋ก ์ฑ์ฐ๋ ๊ฒฝ์ฐ์ ์๋ฅผ ๊ตฌํด๋ณด์.
๐์ ๋ ฅ
์ฒซ์งธ ์ค์ N(1 ≤ N ≤ 30)์ด ์ฃผ์ด์ง๋ค.
๐์ถ๋ ฅ
์ฒซ์งธ ์ค์ ๊ฒฝ์ฐ์ ์๋ฅผ ์ถ๋ ฅํ๋ค.
๐ ๋ฌธ์ ํ์ด
dp ์ ํ์์ ์ฐพ์๋ด๋ ๋ฌธ์ ์๋ค. ์ ํ์ ์ธ dp ๋ฌธ์ .
์์ ์ฌ์ง์ด N์ด 12์ผ ๋์ ํ ๊ฒฝ์ฐ์ด๋ค.
๊ทธ๋ฆผ์ ์กฐ๊ธ ๊ทธ๋ ค๋ณด๋ฉด N์ด ํ์์ผ๋๋ 2X1, 1X2 ํ์ผ๋ก ๋ฒฝ์ ์ ๋ถ ์ฑ์ธ ์ ์๋ค. ๋๋ฌธ์ N์ด ํ์๋ฉด ๊ฒฝ์ฐ์ ์๋ 0์ด ๋๋ค.
N์ด 2์ผ ๋๋ 3๊ฐ์ง์ ๊ฒฝ์ฐ์ ์๊ฐ ๋ฑ์ฅํ๋ค.
N์ด 4์ผ ๋๋ ์ด 11๊ฐ์ง์ ๊ฒฝ์ฐ์ ์๊ฐ ๋ฑ์ฅํ๋๋ฐ N์ด 4์ผ ๋๋ง ๋์ฌ ์ ์๋ ๊ฒฝ์ฐ์ ์ 2๊ฐ๋ N์ด 2์ผ ๋์ ๊ฒฝ์ฐ์ ์์ธ 3์ ์ ๊ณฑํ ๊ฒฐ๊ณผ์ด๋ค.
์ฒ์์๋ ์ด๋ ๊ฒ ์๊ฐํ์ฌ ์ ํ์์ ์ ์๋๋ฐ ํ๋ ธ์ต๋๋ค ํ์ ์ ๋ฐ์๋ค.
๊ฒฐ๊ตญ ์ง๋ฌธํ๊ธฐ์ ๋์์ ๋ฐ์ ์ ํ์์ ์์ฑํ๋ค.
์ ํ์์ ๋ค์๊ณผ ๊ฐ๋ค.
dp[N] = dp[N-2]*4 - dp[N-4] (N % 2 == 0)
๐ป ์ฝ๋
ํ์ด์ฌ
1 2 3 4 5 | n=int(input()) dp=[1,0,3]+[0]*(n-2) for i in range(4,n+1,2): dp[i]=dp[i-2]*4-dp[i-4] print(dp[n]) | cs |
์๋ฐ
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int n = Integer.valueOf(br.readLine()); long[] dp = new long[n+1]; dp[0] = 1; if (n > 1) { dp[2] = 3; } for (int i=4; i<=n; i=i+2) { dp[i] = dp[i-2]*4 - dp[i-4]; } System.out.println(dp[n]); } } | cs |
๐ญ ์ํ์ฐฉ์ค
์๋ฐ๊ฐ ์์ง ์ต์ํ์ง ์์ง๋ง ๊ทธ๋๋ ์ฌ๋ฏธ์๋ค ใ ใ
๋ฐํ์์๋ฌ๋ N์ด 1์ผ๋, dp[2] ์ ์ด๊ธฐ๊ฐ ์ธํ ์ ํ์ฌ์ ๋ฐ์ํ์๋ค.
๐ ๋ฌธ์ ๋งํฌ ํ์ผ ์ฑ์ฐ๊ธฐ
'Problem Solving > ๋ฐฑ์ค' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฐฑ์ค] 1766๋ฒ: ๋ฌธ์ ์ง (0) | 2023.01.13 |
---|---|
[๋ฐฑ์ค] 1719๋ฒ: ํ๋ฐฐ - ํ์ด์ฌ (0) | 2022.12.21 |
[๋ฐฑ์ค] 1261๋ฒ: ์๊ณ ์คํ (0) | 2022.11.23 |
[๋ฐฑ์ค] 16118๋ฒ ๋ฌ๋น ์ฌ์ฐ - ํ์ด์ฌ (0) | 2022.10.10 |
[๋ฐฑ์ค] 13164๋ฒ: ํ๋ณต ์ ์น์ - ์๋ฐ (0) | 2022.10.09 |