๐ ๋ฐฑ์ค 2133 ํ์ผ์ฑ์ฐ๊ธฐ ๐
www.acmicpc.net/problem/2133
๐ค ๋ฌธ์ ํ์ด ๐ค
n = 2์ผ ๋, 2 x 1, 1 x 2ํ์ผ๋ก 3 x 2 ํ์ผ์ ๋ง๋ค ์ ์๋ ๊ฐฏ์๋ฅผ ์ธ์ด๋ณด๋ฉด 3๊ฐ์ง ๊ฒฝ์ฐ์ ์๊ฐ ๋์จ๋ค.
n = 3์ผ ๋, ํ์์ผ๋๋ ์ด๋ ํ ํ์ผ๋ ๋ง๋ค ์ ์๋ค.
n = 4์ผ ๋๋ 2๊ฐ์ง์ ์๋ก์ด ๊ฒฝ์ฐ์ ์๋ฅผ ์ฐพ์ ์ ์๋ค.
n = 6์ผ ๋ ๋ํ 2๊ฐ์ง์ ์๋ก์ด ๊ฒฝ์ฐ์ ์๋ฅผ ์ฐพ์ ์ ์๋ค.
์ด๋ ๊ฒ ์ง์๋ก ์ฆ๊ฐํ๋ n์์๋ ๋ชจ๋ 2๊ฐ์ง์ ์๋ก์ด ๊ฒฝ์ฐ์ ์๋ฅผ ์ฐพ์ ์ ์๋ค.
dp[0] = 1, ์๋ฌด๊ฒ๋ ์๋ ๊ฒฝ์ฐ์ ์ ํ๋
dp[2] = 3, 3๊ฐ์ง ๊ฒฝ์ฐ์ ์
dp[4] = dp[2] * 3, + dp[0] * 2, n = 4์ผ๋๋ 2์ผ๋ ๋์ฌ ์ ์๋ ๊ฒฝ์ฐ์ ์์ 3๊ฐ์ง ๊ฒฝ์ฐ์ ์๋ฅผ ๊ณฑํด์ฃผ๊ณ 2๊ฐ์ง ๊ฒฝ์ฐ์ ์๊ฐ ๋ ๋์ฌ ์ ์๋ค.
dp[6] = dp[4] * 3 + dp[2] * 2, n = 6์ผ๋๋ ํ์ผ ํฌ๊ธฐ 4๋ฅผ ์ฌ์ฉํด์ ์๋ก์ด ๊ฒฝ์ฐ์ 2๊ฐ์ง๊ฐ ๋์ค๋ฏ๋ก n = 2์ ๊ฒฝ์ฐ์ ์์ 2๋ฅผ ๊ณฑํ ๊ฐ์ ๋ํด์ค๋ค.
์ด ์์ ์ ์ ๋ ฅ๋ฐ์ n๊น์ง ๋ฐ๋ณตํ๋ค.
โจ๏ธ ์ฝ๋ โจ๏ธ
n = int(input())
def sol(n):
if n % 2 != 0:
return 0
else:
dp = [0] * (n + 1)
dp[0] = 1 # 0์ค์ธ ๊ฒฝ์ฐ๋ ์๋ฌด๊ฒ๋ ์ํ๋ ๊ฒฝ์ฐ ํ๋์ด๋๊น
dp[2] = 3
for i in range(4, n + 1):
dp[i] = dp[i - 2] * 3
for j in range(i - 4, -1, -2):
dp[i] += dp[j] * 2
return dp[n]
print(sol(n))
'๐ช๐ป์ฝ๋ฉํ ์คํธ > ๋ฐฑ์ค & ํ๋ก๊ทธ๋๋จธ์ค' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๊ตฌํ, ์๋ฎฌ๋ ์ด์ ] 20061 : ๋ชจ๋ ธ๋ฏธ๋ ธ๋๋ฏธ๋ ธ 2 python (0) | 2021.04.07 |
---|---|
[DP] ๋ฐฑ์ค 11058 ํฌ๋ฆฌ๋ณด๋ python (0) | 2021.04.03 |
[BFS, ๊ตฌํ] ๋ฐฑ์ค 16236 ์๊ธฐ ์์ด python (0) | 2021.04.01 |
[DP] ๋ฐฑ์ค 1699 ์ ๊ณฑ์์ ํฉ python (1) | 2021.04.01 |