๐ ๋ฌธ์
https://www.acmicpc.net/problem/9095
๐ ๋์ ํ์ด
์์ง dp์ ๋ํ ๊ฐ์ด ์์ด์ ์ด ๋ฌธ์ ๋ฅผ ๋ณด๊ณ , ์ dp ๋ฌธ์ ๋ค! ๋ผ๋ ์๊ฐ์ด ๋ค์ง ์์๋ค. (์ด๊ฒ์ด ๊ฐ์ฅ ํฐ ๋ฌธ์ ๋ค,, dp๋ง ํ๋ฒ ํฌ๊ฒ ์กฐ์ ธ์ผํ๋,,,) ๊ทธ๋๋ ์ด์จ๋ ,,, ์๋ ๋ฌธ์ ๋ถ๋ฅ์์ dp ๋ก ๋ถ๋ฅํด๋์ ๊ฒ์ ๋ณด๊ณ ํํธ๋ฅผ ์ป์๋ค.
dp ๋ฐฐ์ด ๋ด๋ถ์, 1์ ๋ง๋ค ์ ์๋ ๊ฒฝ์ฐ์ ์๋ dp[1]์ , 2๋ฅผ ๋ง๋ค ์ ์๋ ๊ฒฝ์ฐ์ ์๋ dp[2]์ ... ์ด๋ ๊ฒ ๋ฃ์ ์์ ์ด๋ค. ๊ท์น์ฑ์ ์ฐพ๊ธฐ ์ํด์ ์ผ๋จ ์์ดํจ๋๋ก ๊ทธ๋ ค๋ณด๋ฉด์ ์๊ฐํ๋ค. (์์ ์ ์๊ณ ๋ฆฌ์ฆ ์คํฐ๋๋ฅผ ํ ๋ 'dp = ๊ท์น์ฑ' ์ด๋ ๊ฒ ํ๋ฉด ์๋๋ค๊ณ ํ๋๊ฒ ๊ฐ์๋ฐ,, ์ผ๋จ ์ด ๋ฌธ์ ๋ ์๊ฐ๋ณด๋ค ๊ฐ๋จํด ๋ณด์ฌ์ ๊ท์น์ฑ์ ๋จผ์ ์ฐพ๊ณ ์ ํ๋ค.)
์ด๋ ๊ฒ ๊ท์น์ด ๋์ถ๋ ์ ์์๋ค. ์ด๊ฒ์ ๊ทธ๋๋ก ์์์ผ๋ก ์ฎ๊ฒจ์ฃผ๋ฉด ์๋์ ๊ฐ๋ค.
๐ ์ ๋ต์ฝ๋
๋งค๋ฒ for๋ฌธ์ ๋๋๋ง๋ค dp๋ฅผ ์์ฑํด์ค๊น ์ถ์์ง๋ง, ๊ทธ๋ ๊ฒ ํ์ง ์์์ด๋ ๋๋ค. N์ด ์ด์ฐจํผ 11์ดํ์ ์๋ก ์ฃผ์ด์ง๊ธฐ ๋๋ฌธ์, T๊ฐ ๋ฌด์จ์๊ฐ ๋์ค๋ ๊ทธ ๋ฐ์ ๋ฑ์ฅํ๋ ์๋ ์ ๋ถ 11์ดํ๋ค, ๊ทธ๋์, dp๋ 11๊ฐ์ ์์๋ก๋ง ์ด๋ฃจ์ด์ง ๋ฐฐ์ด์ด ๋ ๊ฒ ์ด๋ค. ๊ทธ๋์ ๊ทธ๋ฅ ๋๋ dp๋ฅผ ๋ฏธ๋ฆฌ ์์ฑํด์ฃผ๊ณ for๋ฌธ์ผ๋ก ์ ๋ ฅ๋ฐ์ N๋ฒ์งธ ๊ฐ๋ค๋ง printํด์ฃผ๋ ๋ฐฉ์์ผ๋ก ์ฝ๋๋ฅผ ์์ฑํ๋ค.
let T = Int(readLine()!)!
var dp = Array(repeating: 0, count: 12)
dp[1] = 1
dp[2] = 2
dp[3] = 4
for i in 4..<12 {
dp[i] = dp[i-1] + dp[i-2] + dp[i-3]
}
for _ in 0..<T {
let n = Int(readLine()!)!
print(dp[n])
}