๋ฌธ์ ๋งํฌ
https://www.acmicpc.net/problem/15988
ํ์ด idea
์๋ ํ๋ค๋ณด๋, 1,2,3 ๋ํ๊ธฐ ๊ด๋ จํ ์๋ฆฌ์ฆ ๋ฌธ์ ๋ฅผ ๋ช๊ฐ ํ์ด๋ดค์ผ๋ฏ๋ก, ๋ ๋ณต์กํด์ผ๋๋๋ฐ ์ด๊ฒ ๊ท์น์ด๋ผ๊ณ ? ํ๋ฉด์ ์ ๋งค๋ชจํธํ๊ฒ ํ์๋ ๋ฌธ์ ์๋ค. ๊ทผ๋ฐ ์๋๋ ๋ค๋ฅผ๊น 1,2,3๋ํ๊ธฐ (๋ฐฑ์ค 9095๋ฒ) ๋ฌธ์ ๋ ๊ทธ๋ฅ ๋์ผํ ๋ฌธ์ ์๋ค. ใ ใ ใ ใ ๊ดํ ์ซ์๋ค...
https://didu-story.tistory.com/225
์์ธํ ํ์ด๋ ์ ํฌ์คํ ์ ์ฐธ๊ณ ํ์. ์์ ํ ๊ฐ์๋ฌธ์ ๋ค. ๊ทธ๋๋ ๋ค์ ํ์ด๋ณด๋๋ฐ ์กฐ๊ฑด์ ๋นผ๋จน๊ธฐ๋ํ๊ณ ํ๋ฉด์ 4๋ฒ์ ๋ ํ๋ฆฌ๊ณ ๋ฌธ์ ๋ฅผ ๋ง์ท๋ค. ใ ใ ์ ์ฅ!! ์ญ์ dp ๋ ๋ฐ๋ณตํ์ต์ด ์ค์ํ๊ฒ๊ฐ๋ค. ๊ฐ์๋ฌธ์ ๋ฅผ ๋๊ฐ์ด ํ์ด๋ ํ๋ฆฌ๊ธฐ๋ ํ๋๊ตฌ๋~~
์ 6๋ฒ๋ง์ ๋ง์ท๊ตฌ๋.ใ ใ ใ ใ ๋ง์ง๋ง ์กฐ๊ฑด 1000000009๋ก ๋๋ ์ฃผ๋๊ฒ์ ๋นผ๋จน๊ธฐ๋ํ๊ณ , if ๋ฌธ์ผ๋ก 0, 1, 2, 3 ์ผ๋๋ฅผ ๊ณ ๋ คํ์ง ์๊ณ ์ ์ฒด ๋ค for ๋ฌธ์ ๋๋ ค๋ฒ๋ ค์ index ๋ฒ์ ๋ฐ ์๋ฌ๊ฐ ๋๊ธฐ๋ ํ๋ค.ใ ใ ใ ใ ์ผ์! ํ๋ฒ์ ์ ๋ชป๋ง์ถฐ ใ ใ
์์ค์ฝ๋
let n = Int(readLine()!)!
for _ in 0..<n {
let num = Int(readLine()!)!
var dp = Array(repeating: 0, count: num+1)
if num == 0 {
print(0)
} else if num == 1 {
print(1)
} else if num == 2 {
print(2)
} else if num == 3 {
print(4)
} else {
dp[1] = 1
dp[2] = 2
dp[3] = 4
for j in 4..<num+1 {
dp[j] = (dp[j-1] + dp[j-2] + dp[j-3]) % 1000000009
}
print(dp[num])
}
}