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

Algorithm/Baekjoon

[๋ฐฑ์ค€] (Swift) 16194๋ฒˆ - ์นด๋“œ ๊ตฌ๋งคํ•˜๊ธฐ2 (DP ๊ธฐ์ดˆ ๋ฌธ์ œ, ์ตœ์†Œ๊ฐ’ ๊ตฌํ•˜๊ธฐ)

๊ฐ์ž ๐Ÿฅ” 2022. 3. 10. 01:40
๋ฐ˜์‘ํ˜•

๋ฌธ์ œ ๋งํฌ

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

 

16194๋ฒˆ: ์นด๋“œ ๊ตฌ๋งคํ•˜๊ธฐ 2

์ฒซ์งธ ์ค„์— ๋ฏผ๊ทœ๊ฐ€ ๊ตฌ๋งคํ•˜๋ ค๊ณ  ํ•˜๋Š” ์นด๋“œ์˜ ๊ฐœ์ˆ˜ N์ด ์ฃผ์–ด์ง„๋‹ค. (1 ≤ N ≤ 1,000) ๋‘˜์งธ ์ค„์—๋Š” Pi๊ฐ€ P1๋ถ€ํ„ฐ PN๊นŒ์ง€ ์ˆœ์„œ๋Œ€๋กœ ์ฃผ์–ด์ง„๋‹ค. (1 ≤ Pi ≤ 10,000)

www.acmicpc.net

 

ํ’€์ด IDEA

์ด์ „ ๋ฌธ์ œ "์นด๋“œ ๊ตฌ๋งคํ•˜๊ธฐ"๋ฅผ ๋จผ์ € ํ’€์–ด๋ณด๋ฉด ๋ฐ”๋กœ ์•Œ ์ˆ˜ ์žˆ๋Š” ๋ฌธ์ œ์ด๋‹ค.  (๋ณต์Šตํ•œ๋‹ค๋Š” ์ƒ๊ฐ์œผ๋กœ ๋‹ค์‹œ ํ’€์ด ์•„์ด๋””์–ด๋ฅผ ์ ์–ด๋ณด์ž)

  • ๊ตฌ๋งค๋ฅผ ์›ํ•˜๋Š” ์นด๋“œ์˜ ์ˆ˜๋ฅผ n , ์นด๋“œ ํŒฉ ๊ฐ๊ฐ์˜ ๊ฐ€๊ฒฉ์„ ๋ฐฐ์—ด p ์— ์ž…๋ ฅ์„ ๋ฐ›์„ ๊ฒƒ์ด๋‹ค.
  • dp ๋ฐฐ์—ด์„ ์ƒ์„ฑํ•˜์—ฌ ์กฐ๊ฑด ๋ฒ”์œ„ ๋ฐ–์˜ ์ˆ˜์ธ 99999 ๋ฅผ n+1 ํฌ๊ธฐ๋งŒํผ ๋„ฃ์–ด์ค€๋‹ค.
    • ๊ฐ€์žฅ ํฐ ์ˆ˜ 999999๋ฅผ ๋„ฃ๋Š” ์ด์œ ๋Š”, ์šฐ๋ฆฌ๋Š” min ๊ฐ’์„ ๊ตฌํ•  ๊ฒƒ์ด๋‹ค. ๋ฒ”์œ„ ๋ฐ–์— ์žˆ๋Š” ์ˆ˜๋ฅผ ๋„ฃ์Œ์œผ๋กœ์จ, ํ•ญ์ƒ ์ž‘์€ ๊ฐ’์ด ์„ ํƒ๋˜๊ฒŒ๋” ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค.
    • dp ๋ฐฐ์—ด์—๋Š”, ์ธ๋ฑ์Šค ์ˆœ์„œ๋Œ€๋กœ ์ตœ์†Œ ๊ธˆ์•ก์ด ๋“ค์–ด๊ฐ„๋‹ค. dp[1] : ์นด๋“œ 1๊ฐœ๋ฅผ ๊ตฌ๋งคํ• ๋•Œ ์ตœ์†Œ ๊ธˆ์•ก, dp[2] : ์นด๋“œ 2๊ฐœ๋ฅผ ๊ตฌ๋งคํ•  ๋•Œ์˜ ์ตœ์†Œ๊ธˆ์•ก... ์ด๋Ÿฐ์‹์œผ๋กœ ๋ง์ด๋‹ค.
  • ์šฐ๋ฆฌ๊ฐ€ ๊ตฌํ•˜๊ณ ์ž ํ•˜๋Š” ๊ฒƒ์€, N ์žฅ์˜ ์นด๋“œ๋ฅผ ๊ตฌ๋งคํ• ๋•Œ ์ตœ์†Œ ๊ธˆ์•ก์„ ์‚ฌ์šฉํ•ด์•ผํ•˜๋Š”, ์ด ์ตœ์†Œ๊ธˆ์•ก์ด๋‹ค. ์ตœ์†Œ๊ธˆ์•ก์€ ์–ด๋–ป๊ฒŒ ๊ตฌํ•  ์ˆ˜ ์žˆ์„๊นŒ?
    • ์˜ˆ์ œ 1๋ฒˆ์„ ํ™œ์šฉํ•ด์„œ ์ ํ™”์‹์„ ๊ตฌํ•ด๋ณด์ž. ์šฐ๋ฆฌ๋Š” ์นด๋“œ 4์žฅ์ด ํ•„์š”ํ•˜๋‹ค. 4์žฅ์„ ๊ตฌ๋งคํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ์•„๋ž˜์™€ ๊ฐ™์ด ๊ตฌ๋งคํ•  ์ˆ˜ ์žˆ๋‹ค.
    • ์นด๋“œ 3์žฅ์„ ์–ด๋–ค ๋ฐฉ์‹์œผ๋กœ๋“  ๊ตฌ๋งค + ์นด๋“œ 1ํŒฉ์งœ๋ฆฌ ๊ตฌ๋งค
    • ์นด๋“œ 2์žฅ์„ ์–ด๋–ค ๋ฐฉ์‹์œผ๋กœ๋“  ๊ตฌ๋งค + ์นด๋“œ 2ํŒฉ์งœ๋ฆฌ ๊ตฌ๋งค
    • ์นด๋“œ 1์žฅ์„ ์–ด๋–ค ๋ฐฉ์‹์œผ๋กœ๋“  ๊ตฌ๋งค + ์นด๋“œ 3ํŒฉ์งœ๋ฆฌ ๊ตฌ๋งค
    • ์นด๋“œ 0์žฅ์„ ์–ด๋–ค ๋ฐฉ์‹์œผ๋กœ๋“  ๊ตฌ๋งค + ์นด๋“œ 4ํŒฉ์งœ๋ฆฌ ๊ตฌ๋งค   ์ด๋ ‡๊ฒŒ ๊ตฌํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ๊ทธ๋Ÿผ ์ด๊ฑธ ์ตœ์†Œ๊ธˆ์•ก์œผ๋กœ ์ƒ๊ฐํ•ด๋ณด์ž. ์–ด๋–ป๊ฒŒ ํ•˜๋ฉด ์ตœ์†Œ๊ธˆ์•ก์ด ๋‚˜์˜ฌ๊นŒ?
    • ์นด๋“œ 3์žฅ์„ ์ตœ์†Œํ•œ์˜ ๊ธˆ์•ก์œผ๋กœ ๊ตฌ๋งคํ•˜๊ณ  + ์นด๋“œ 1ํŒฉ์งœ๋ฆฌ ๊ตฌ๋งค
    • ์นด๋“œ 2์žฅ์„ ์ตœ์†Œํ•œ์˜ ๊ธˆ์•ก์œผ๋กœ ๊ตฌ๋งคํ•˜๊ณ  + ์นด๋“œ 2ํŒฉ์งœ๋ฆฌ ๊ตฌ๋งค
    • ์นด๋“œ 1์žฅ์„ ์ตœ์†Œํ•œ์˜ ๊ธˆ์•ก์œผ๋กœ ๊ตฌ๋งคํ•˜๊ณ  + ์นด๋“œ 3ํŒฉ์งœ๋ฆฌ ๊ตฌ๋งค 
    • ์นด๋“œ 0์žฅ์„ ์ตœ์†Œํ•œ์˜ ๊ธˆ์•ก์œผ๋กœ ๊ตฌ๋งคํ•˜๊ณ  + ์นด๋“œ 4ํŒฉ์งœ๋ฆฌ ๊ตฌ๋งค  
  • ์œ„ ๋„ค ๊ฐ€์ง€ ๊ฒฝ์šฐ ๋ชจ๋‘ 4์žฅ์˜ ์นด๋“œ๋ฅผ ๊ตฌ๋งคํ•˜๋Š” ๊ฒฝ์šฐ์ด๊ณ , ์ด์ค‘์—์„œ ์ตœ์†Œ!!๊ธˆ์•ก์„ ์ฐพ์œผ๋ฉด ์šฐ๋ฆฌ๊ฐ€ ์›ํ•˜๋Š” ๋‹ต์ด ๋‚˜์˜จ๋‹ค. 
  • ์ˆซ์ž๊ฐ€ ๋‘๊ฐœ๊ฐ€ ๋ณ€ํ•˜๋Š” ๋ฐ˜๋ณต๋ฌธ์„ ๊ตฌํ˜„ํ•˜๊ธฐ ์œ„ํ•ด ์ด์ค‘ for-in ๊ตฌ๋ฌธ์„ ์‚ฌ์šฉํ•ด์„œ ๊ทธ๋Œ€๋กœ ๊ตฌํ˜„ํ•˜๋ฉด ๋œ๋‹ค.

 

์†Œ์Šค์ฝ”๋“œ

https://github.com/deslog/Algorithm/blob/main/Algorithm/Boj/16194_%EC%B9%B4%EB%93%9C%20%EA%B5%AC%EB%A7%A4%ED%95%98%EA%B8%B02/main.swift

 

GitHub - deslog/Algorithm

Contribute to deslog/Algorithm development by creating an account on GitHub.

github.com

let n = Int(readLine()!)!
let p = readLine()!.split(separator: " ").map { Int(String($0))! }
var dp = [Int](repeating: 999999, count: n+1)
//์ตœ์†Œ๊ฐ’์„ ์ถ”์ถœํ•ด์•ผํ•˜๋‹ˆ๊นŒ dp ๋ฅผ ์กฐ๊ฑด ๋ฒ”์œ„ ๋ฐ–์˜ ์ˆ˜๋กœ ์ฑ„์›Œ๋„ฃ์–ด์ฃผ์—ˆ๋‹ค.
dp[0] = 0
// 0์„ ๋„ฃ์–ด์ค€ ์ด์œ ๋Š”, ์•„๋ž˜ for ๋ฌธ์„ ๋Œ๋ฉด์„œ i=1,j=1 ์ผ๋•Œ dp[0]+p[0]์ด ๊ณ„์‚ฐ๋ ํ…๋ฐ, ์ด๋•Œ ํ—ˆ์ˆ˜ 999999 ๊ฐ€ ๋“ค์–ด๊ฐ€๋ฉด ์•ˆ๋˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.
for i in 1..<n+1 {
    for j in 1..<i+1 {
        dp[i] = min(dp[i], dp[i-j]+p[j-1])
    }
}
print(dp[n])

 

๋ฐ˜์‘ํ˜•