https://www.acmicpc.net/problem/11727
๐ ๋ฌธ์
2×n ์ง์ฌ๊ฐํ์ 1×2, 2×1๊ณผ 2×2 ํ์ผ๋ก ์ฑ์ฐ๋ ๋ฐฉ๋ฒ์ ์๋ฅผ ๊ตฌํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค.
์๋ ๊ทธ๋ฆผ์ 2×17 ์ง์ฌ๊ฐํ์ ์ฑ์ด ํ๊ฐ์ง ์์ด๋ค.
๐ ์ ๋ ฅ
์ฒซ์งธ ์ค์ n์ด ์ฃผ์ด์ง๋ค. (1 ≤ n ≤ 1,000)
๐ ์ถ๋ ฅ
์ฒซ์งธ ์ค์ 2×n ํฌ๊ธฐ์ ์ง์ฌ๊ฐํ์ ์ฑ์ฐ๋ ๋ฐฉ๋ฒ์ ์๋ฅผ 10,007๋ก ๋๋ ๋๋จธ์ง๋ฅผ ์ถ๋ ฅํ๋ค.
๐ ํ์ด ๋ฐฉ์
์ด 2x1, 1x2, 2x2 ์ธ ๊ฐ์ง์ ํ์ผ์ ์ฌ์ฉํ ์ ์๋๋ฐ์.
n = 1 ์ผ ๋๋ 1x2 ํ์ผ ๋ก ์ด 1๊ฐ์ง ๊ฒฝ์ฐ์ ์๋ก ๋ํ๋ผ ์ ์๊ณ
n = 2 ์ผ ๋๋ 1x2 2๊ฐ / 2x1 2๊ฐ / 2x2 1๊ฐ ๋ก ์ด 3๊ฐ์ง์ ๊ฒฝ์ฐ์ ์๋ก ๋ํ๋ผ ์ ์์ต๋๋ค.
n ์ด 2์ผ ๋๊น์ง๋ ๊ทธ๋ฅ ๋จธ๋ฆฌ๋ก ๊ณ์ฐํด์ ๊ตฌํ ์ ์๋๋ฐ์.
๊ทธ๋ ๋ค๋ฉด n = 3 ์ผ ๋ ๊ฒฝ์ฐ์ ์๋ ์ด๋ป๊ฒ ๋ ๊น์ ?
์ด๋ ๊ฒ ์ด ๋ค์ฏ๊ฐ์ง ๊ฒฝ์ฐ๊ฐ ๋ฉ๋๋ค.
ํน์ ํด๋น ๊ฒฝ์ฐ๋ฅผ ๋ณด๊ณ ๊ท์น์ ๊ตฌํ ์ ์์๊น์ ? (ํํธ๋ ๋ธ๋ก ์์ ์์ต๋๋ค)
n = 1 ์ ๊ฒฝ์ฐ์ ์์ 2x1 2๊ฐ๋ 2x2 1๊ฐ๊ฐ ๋ง๋ถ์ฌ์ก๊ณ ,
n = 2 ์ ๊ฒฝ์ฐ์ ์์ 1x2 ํ์ผ ํ๋๊ฐ ๋ถ์ฌ์ ธ์ ์ด 5๊ฐ์ง์ ๊ฒฝ์ฐ์ ์๊ฐ ๋์จ ๊ฑธ ์ ์ ์์ต๋๋ค.
์ํ ๊ทธ๋ฌ๋ฉด n ์ ๊ฒฝ์ฐ์ ์๋ฅผ ๊ตฌํ๋ ค๋ฉด
n - 2 ์ ๋ธ๋ก์๋ 2x1 2๊ฐ๋ 2x2 1๊ฐ ๋ก ์ด 2๊ฐ๋ฅผ ๋ถ์ด๋ฉด ๋๊ณ ,
n - 1 ์ ๋ธ๋ก์๋ 1x2 ๋ก ์ด 1๊ฐ๋ฅผ ๋ถ์ด๋ฉด ๋๊ฒ ๋ค์.
ํด๋น ์์ ๋ํ๋ด๋ณด๋ฉด ์ด๋ ์ต๋๋ค.
n - 2 ์ ๊ฐ์ * 2 + n - 1 ์ ๊ฐ์
ํด๋น ์์ ์ด์ฉํด์ n = 4 ๋ฅผ ๊ตฌํด๋ณด๊ฒ ์ต๋๋ค.
๊ทธ๋ผ ์ด์ ๋ณด์ด์๋์ ?
์ฃผํฉ์ ๋ธ๋ก์ด n-2 ์์ ๊ฐ์ ธ์จ ๋ธ๋ก์ด๊ณ ,
์ด๋ก์ ๋ธ๋ก์ด n-1 ์์ ๊ฐ์ ธ์จ ๋ธ๋ก์ ๋๋ค.
์ฃผํฉ์ ๋ธ๋ก๋ค ๋ค์๋ 2x1 2๊ฐ๋ 2x2 1๊ฐ ๊ฐ ๋ถ์๊ณ ,
์ด๋ก์ ๋ธ๋ก๋ค ๋ค์๋ 1x2 ๊ฐ ๋ถ์ด์ n = 4 ์ผ ๋์ ๊ฒฝ์ฐ์ ์๋ ์ด 11๊ฐ๋ก ๋ํ๋ผ ์ ์์ต๋๋ค.
์ด๋ฐ ๋ฐฉ์์ ๊ณ์ ๋ฐ๋ณตํด์ฃผ๋ฉด ๋ฉ๋๋ค
10,007๋ก ๋๋ ๋๋จธ์ง๋ฅผ ์ถ๋ ฅํด์ผํ๋ ๊ฑฐ ์์ง ๋ง์๊ตฌ์ !!
๐ ์ฝ๋
n = int(input())
dp = [0 for _ in range(max(n, 2))]
dp[0] = 1
dp[1] = 3
for i in range(2, n):
dp[i] = dp[i-1] + dp[i-2] * 2
print(dp[n-1] % 10007)
'๐ฉ๐ปโ๐ป ์๊ณ ๋ฆฌ์ฆ > ๋ฐฑ์ค' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฐฑ์ค] 1965๋ฒ ์์๋ฃ๊ธฐ (Python) (0) | 2024.11.27 |
---|---|
[๋ฐฑ์ค] 1912๋ฒ ์ฐ์ํฉ (Python) (1) | 2024.11.15 |
[๋ฐฑ์ค] 11650๋ฒ ์ขํ ์ ๋ ฌํ๊ธฐ (Python) (1) | 2024.09.14 |
[๋ฐฑ์ค] 14469๋ฒ ์๊ฐ ๊ธธ์ ๊ฑด๋๊ฐ ์ด์ 3 (Python) (0) | 2024.09.05 |
[๋ฐฑ์ค] 1105๋ฒ ํ (Python) (0) | 2024.08.29 |