Potato
์•ˆ๋…•ํ•˜์„ธ์š”, ๊ฐ์žก๋‹ˆ๋‹ค?๐Ÿฅ” ^___^ ๐Ÿ˜บ github ๋ฐ”๋กœ๊ฐ€๊ธฐ ๐Ÿ‘‰๐Ÿป

Algorithm/Baekjoon

[๋ฐฑ์ค€] (Swift) 1309๋ฒˆ - ๋™๋ฌผ์›

๊ฐ์ž ๐Ÿฅ” 2022. 3. 21. 02:14
๋ฐ˜์‘ํ˜•

๋ฌธ์ œ ๋งํฌ

https://www.acmicpc.net/problem/1309

 

1309๋ฒˆ: ๋™๋ฌผ์›

์ฒซ์งธ ์ค„์— ์šฐ๋ฆฌ์˜ ํฌ๊ธฐ N(1≤N≤100,000)์ด ์ฃผ์–ด์ง„๋‹ค.

www.acmicpc.net

 

ํ’€์ด 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])
๋ฐ˜์‘ํ˜•