๐ก ์กฐ๊ฑด
- ์ด๋ค ๋๋ฌผ์์ ๊ฐ๋ก๋ก ๋์นธ ์ธ๋ก๋ก N์นธ์ธ ์๋์ ๊ฐ์ ์ฐ๋ฆฌ๊ฐ ์๋ค.
- ์ด ๋๋ฌผ์์๋ ์ฌ์๋ค์ด ์ด๊ณ ์๋๋ฐ ์ฌ์๋ค์ ์ฐ๋ฆฌ์ ๊ฐ๋ ๋, ๊ฐ๋ก๋ก๋ ์ธ๋ก๋ก๋ ๋ถ์ด ์๊ฒ ๋ฐฐ์นํ ์๋ ์๋ค.
- ๋๋ฌผ์ ์กฐ๋ จ์ฌ์ ๋จธ๋ฆฌ๊ฐ ์ํ์ง ์๋๋ก ์ฐ๋ฆฌ๊ฐ 2*N ๋ฐฐ์ด์ ์ฌ์๋ฅผ ๋ฐฐ์นํ๋ ๊ฒฝ์ฐ์ ์๊ฐ ๋ช ๊ฐ์ง์ธ์ง๋ฅผ ์์๋ด๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ๋ ๋ฌธ์ .
์ฌ์๋ฅผ ํ ๋ง๋ฆฌ๋ ๋ฐฐ์นํ์ง ์๋ ๊ฒฝ์ฐ๋ ํ๋์ ๊ฒฝ์ฐ์ ์๋ก ์น๋ค๊ณ ๊ฐ์ ํ๋ค.
- ์ฒซ์งธ ์ค์ ์ฐ๋ฆฌ์ ํฌ๊ธฐ N(1โคNโค100,000)์ด ์ฃผ์ด์ง๋ค.
- ์ฒซ์งธ ์ค์ ์ฌ์๋ฅผ ๋ฐฐ์นํ๋ ๊ฒฝ์ฐ์ ์๋ฅผ 9901๋ก ๋๋ ๋๋จธ์ง๋ฅผ ์ถ๋ ฅํ์.
- DP, ๋ค์ด๋๋ฏน ํ๋ก๊ทธ๋๋ฐ ์ ํ์ ๋ฌธ์
๐ฅ ์์ค ์ฝ๋
from sys import stdin
n = int(stdin.readline())
dp = [0 for _ in range(100001)]
dp[1], dp[2], dp[3] = 3, 7, 17
for i in range(4, 100001):
dp[i] = (dp[i - 1] * 2 + dp[i - 2]) % 9901
print(dp[n])
๐ ์์ ๋ฐ ์คํ๊ฒฐ๊ณผ
์์
4
์คํ๊ฒฐ๊ณผ
41
โจ๏ธ ๋ฌธ์ ํ์ด
- n์ ํฌ๊ธฐ๊ฐ ์ต๋ 10๋ง์ด๋ฉฐ, 2 * N ๋ฐฐ์ด์ ์ฌ์๋ฅผ ๋ฐฐ์นํ ์ ์๋ ๊ฒฝ์ฐ๋ฅผ ๊ตฌํด์ผํ๋ฉฐ, ์ฌ์๋ฅผ ๋ฐฐ์นํ๋ ๊ฒฝ์ฐ์ ์๋ฅผ 9901๋ก ๋๋์ด์ผํ๋ค.
- ์ด๋ฌํ ๋ฌธ์ ๋ N์ ํฌ๊ธฐ๊ฐ ํฌ๊ณ , ๊ฒฝ์ฐ์ ์๋ฅผ ๊ตฌํด์ผํ๊ธฐ ๋๋ฌธ์ ๋ธ๋ฃจํธํฌ์ค ๊ฐ์ ์๊ณ ๋ฆฌ์ฆ์ผ๋ก ํด๊ฒฐํ๋ ค๊ณ ํ๋ฉด ์๊ฐ์ด๊ณผ๊ฐ ๋ฐ์ํ๋ค.
- ๊ทธ๋ ๊ธฐ ๋๋ฌธ์ ์ฐ๋ฆฌ๊ฐ ์๊ฐํ ์ ์๋ ์๊ณ ๋ฆฌ์ฆ์ ๋ค์ด๋๋ฏน ํ๋ก๊ทธ๋๋ฐ์ด ์๊ฒ ๋ค.
- n ์ด 1์ผ ๋๋ 1 * n = 2. ์ธ๊ฐ์ง์ ๊ฒฝ์ฐ๊ฐ ์๋ค.
n ์ด 2์ผ ๋์๋ 7๊ฐ์ง, n ์ด 3์ผ ๋์๋ 17๊ฐ์ง๊ฐ ๋๋ค.
- ์ด๋ฅผ ํตํด์ dp[i] = (dp[i-1] * 2 + dp[i-2]) % 9901 ๋ผ๊ณ ํ ์ ์๋ค.
- ์ด๋ฅผ ํตํด์ dp list ๋ฅผ ์ฑ์ ์
๋ ฅ์ผ๋ก ๋ฐ์ n์ ํด๋นํ๋ ๊ฒฝ์ฐ์ ์๋ฅผ ์ถ๋ ฅํ๋ฉฐ ๋๋ค.