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

Algorithm/Baekjoon

[๋ฐฑ์ค€] (Swift) 9095๋ฒˆ - 1, 2, 3 ๋”ํ•˜๊ธฐ (dp, ๋‘๋ฒˆ์งธ ํ’€์ด)

๊ฐ์ž ๐Ÿฅ” 2023. 1. 5. 16:01
๋ฐ˜์‘ํ˜•

๐ŸŸ  ๋ฌธ์ œ

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

 

9095๋ฒˆ: 1, 2, 3 ๋”ํ•˜๊ธฐ

๊ฐ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๋งˆ๋‹ค, n์„ 1, 2, 3์˜ ํ•ฉ์œผ๋กœ ๋‚˜ํƒ€๋‚ด๋Š” ๋ฐฉ๋ฒ•์˜ ์ˆ˜๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค.

www.acmicpc.net

 

๐ŸŸ  ๋‚˜์˜ ํ’€์ด

์•„์ง 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])
}
๋ฐ˜์‘ํ˜•