๋ฐ์ํ
๋ฌธ์ ๋งํฌ
https://www.acmicpc.net/problem/1309
ํ์ด IDEA
์ฌ์๊ฐ ์ด๋ ์์น์ ์ค๋๋์ ๋ฐ๋ผ ์๋ก ๋ค์ด์ค๋ ์ฌ์๋ค์ ์์น๊ฐ ๋ฌ๋ผ์ง๋ค. ํ์ง๋ง ์ด ์ด์ ์ ๋จ์ํ ์ซ์๊ท์น์ด ์๋์ง ์ฐพ์๋ณด์๋ค. ์์๊ฐ N = 4 ์ผ๋๊ฐ ์ฃผ์ด์ก์ผ๋, N=1,2,3 ์ ์ฐพ์๋ณด์๋ค.
N=1 ์ผ๋ 3, N=2 ์ผ๋ 7, N=3์ผ๋ 17์ด ๋์๊ณ , N=4์ผ๋๋ 41์ด ๋๋ค๊ณ ํ๋ค. ์ด ์ซ์๋ค์ ํตํด ๊ท์น์ ์ฐพ์๋ณด๋ฉด, n-1๋ฒ์งธ ์ซ์์ 2๋ฅผ ๊ณฑํ๊ณ , n-2๋ฒ์งธ ์ซ์๋ฅผ ๋ํด์ฃผ๋ฉด n์ผ๋์ ๊ฐ์ด ๋์จ๋ค๋ ๋จ์ํ ์ซ์๊ท์น์ด ์กด์ฌํ๋ค.
์ด์ฒ๋ผ dp ๋ฌธ์ ์์๋ ๊ท์น์ ์ฐพ๋ ๊ฒ์ด ๋งค์ฐ ์ค์ํ๋ค.
์์ค์ฝ๋ - ๋ง์์ต๋๋ค!
let n = Int(readLine()!)!
var dp = Array(repeating: 0, count: n+1)
dp[0] = 1
dp[1] = 3
for i in 2..<n+1 {
dp[i] = ((2*dp[i-1]) + dp[i-2]) % 9901
}
print(dp[n])
๋ฐ์ํ