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

Algorithm/Baekjoon

[๋ฐฑ์ค€] (Swift) 9095๋ฒˆ - 1,2,3 ๋”ํ•˜๊ธฐ (์Šค์œ„ํ”„ํŠธ ๋‹ค์ด๋‚˜๋ฏน ํ”„๋กœ๊ทธ๋ž˜๋ฐ ํ’€์ด)

๊ฐ์ž ๐Ÿฅ” 2022. 3. 8. 15:20
๋ฐ˜์‘ํ˜•

๋ฌธ์ œ ๋งํฌ

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

 

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

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

www.acmicpc.net

 

๋‚ด๊ฐ€ ํ‘ผ ํ’€์ด - ๋งž์•˜์Šต๋‹ˆ๋‹ค!

dp ๋ฌธ์ œ๋ฅผ ์„ธ ๋ฒˆ์งธ ํ‘ธ๋Š” ๊ฒƒ์ด์ง€๋งŒ, ๊ฐ์„ ์•„์ง ์žก์ง€ ๋ชปํ–ˆ๋”ฐ. (๋ฐ”๋ณธ๊ฐ€) ๊ทธ๋ž˜์„œ ํ’€์ด๋ฅผ ์ฐพ์•„๋ณด๋˜ ์ค‘, dp ๋ฌธ์ œ๋Š” ๊ทœ์น™์„ ์ฐพ์•„๋‚ด๋Š” ๊ฑฐ์‹ฑ ํ•ต์‹ฌ ํฌ์ธํŠธ๊ฐ€ ๋œ๋‹ค๋Š” ์ ์„ ์•Œ๊ฒŒ ๋˜์—ˆ๋‹ค. dp ๋ฌธ์ œ ํŠน์„ฑ์ƒ, ๊ฒฝ์šฐ์˜ ์ˆ˜๋ฅผ ์ฐพ๋Š” ๋ฌธ์ œ๊ฐ€ ๋งŽ๊ณ , memoization ํ•ด๋†“์€ ๋ฐ”๋กœ ์ง์ „์˜ ์ˆ˜์—ด์— ๋”ํ•ด์„œ ๊ฐ’์„ ์ฐพ์•„๋‚ด๋Š” ๋ฌธ์ œ๊ฐ€ ๋งŽ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

๋‚ด๊ฐ€ ํ•ด๋‹น ๋ฌธ์ œ๋ฅผ ํ’€์ดํ•œ ๋ฐฉ๋ฒ•์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค. *(ํ•„๊ธฐ์— ์˜ค๋ฅ˜๊ฐ€ ์žˆ์–ด์„œ ์ˆ˜์ •ํ–ˆ์Šด๋‹ค ํ—ˆํ—ˆ)

์ด๋ ‡๊ฒŒ ์ผ๋‹จ 1 ๋ถ€ํ„ฐ ์ญ‰ ๊ฒฝ์šฐ์˜ ์ˆ˜๋ฅผ ์‚ดํŽด๋ณด๋ฉด, dp[n] = dp[n-1] + dp[n-2] + dp[n-3] ์ด๋ผ๋Š” ๊ทœ์น™์„ ๋ฐœ๊ฒฌํ•˜๊ฒŒ ๋œ๋‹ค.
๋”ฐ๋ผ์„œ dp[0], dp[1], dp[2], dp[3] ๊นŒ์ง€ ์ž„์˜์˜ ์ˆซ์ž๋ฅผ ๋„ฃ์–ด์ค€ ๋’ค, 4 ๋ถ€ํ„ฐ๋Š” ํ•ด๋‹น ์ˆ˜์‹์— ๋งž๊ฒŒ ๊ฒฝ์šฐ์˜ ์ˆ˜๋ฅผ ๊ตฌํ•˜๋ฉด ๋œ๋‹ค.์ด๋ฅผ ์ฝ”๋“œ๋กœ ๊ตฌํ˜„ํ•˜๋ฉด ์•„๋ž˜์™€ ๊ฐ™๋‹ค.

let n = Int(readLine()!)!

for _ in 0..<n {
    let num = Int(readLine()!)!
    var dp = [Int](repeating: 0, count: num+1)
    
    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 i in 4..<num+1 {
            dp[i] = dp[i-1] + dp[i-2] + dp[i-3]
        }
        print(dp[num])
    }

}

 

dp ๋ฌธ์ œ๋Š” ์šฐ์„  ๋”ฑ๋ณด๋ฉด "์•„, dp ๊ตฌ๋‚˜" ๋ฅผ ์•Œ์ •๋„๋กœ ์—ฐ์Šต์ด ํ•„์š”ํ•œ ๊ฒƒ ๊ฐ™๋‹ค. dp ์ž„์„ ๋ฐœ๊ฒฌํ•˜๋Š” ์ˆœ๊ฐ„, ๋ฌธ์ œ๋ฅผ ํ’€์ดํ•˜๋Š” ๋ฐฉ์‹์— ๋Œ€ํ•ด์„œ๋Š” ๊ฑฐ์˜ ๋Œ€๋ถ€๋ถ„ ๋™์ผํ•˜๊ฒŒ ํ’€์ด๋˜๋ฏ€๋กœ, ์—ญ์‹œ ๋ฌธ์ œ๋Š” ๋งŽ์ด ํ’€์–ด๋ณด๊ณ  ๊ฐ์„ ์ตํžˆ๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•  ๊ฒƒ ๊ฐ™๋‹ค.

๊ทธ๋ฆฌ๊ณ  dp ๋ฌธ์ œ๋ฅผ ์ ‘ํ–ˆ์„ ๋•Œ๋Š” ๊ทœ์น™์„ ๋จผ์ € ์ฐพ์œผ๋ ค๊ณ  ๋…ธ๋ ฅํ•ด๋ณด์ž!

๋ฐ˜์‘ํ˜•