๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
3๏ธโƒฃ Swift/Problem Solving

[Swift Algorithm] ๊ตฌ๊ฐ„ ํ•ฉ ๊ตฌํ•˜๊ธฐ 4 BOJ #11659

by seolhee2750 2021. 10. 20.
๋ฌธ์ œ ์„ค๋ช…

์ˆ˜ N๊ฐœ๊ฐ€ ์ฃผ์–ด์กŒ์„ ๋•Œ, i๋ฒˆ์งธ ์ˆ˜๋ถ€ํ„ฐ j๋ฒˆ์งธ ์ˆ˜๊นŒ์ง€ ํ•ฉ์„ ๊ตฌํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜์‹œ์˜ค.

 

์ž…๋ ฅ

์ฒซ์งธ ์ค„์— ์ˆ˜์˜ ๊ฐœ์ˆ˜ N๊ณผ ํ•ฉ์„ ๊ตฌํ•ด์•ผ ํ•˜๋Š” ํšŸ์ˆ˜ M์ด ์ฃผ์–ด์ง„๋‹ค. ๋‘˜์งธ ์ค„์—๋Š” N๊ฐœ์˜ ์ˆ˜๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. ์ˆ˜๋Š” 1,000๋ณด๋‹ค ์ž‘๊ฑฐ๋‚˜ ๊ฐ™์€ ์ž์—ฐ์ˆ˜์ด๋‹ค. ์…‹์งธ ์ค„๋ถ€ํ„ฐ M๊ฐœ์˜ ์ค„์—๋Š” ํ•ฉ์„ ๊ตฌํ•ด์•ผ ํ•˜๋Š” ๊ตฌ๊ฐ„ i์™€ j๊ฐ€ ์ฃผ์–ด์ง„๋‹ค.

 

์ถœ๋ ฅ

์ด M๊ฐœ์˜ ์ค„์— ์ž…๋ ฅ์œผ๋กœ ์ฃผ์–ด์ง„ i๋ฒˆ์งธ ์ˆ˜๋ถ€ํ„ฐ j๋ฒˆ์งธ ์ˆ˜๊นŒ์ง€ ํ•ฉ์„ ์ถœ๋ ฅํ•œ๋‹ค.

 

์ž…์ถœ๋ ฅ ์˜ˆ์ œ

์ž…๋ ฅ

5 3
5 4 3 2 1
1 3
2 4
5 5

์ถœ๋ ฅ

12
9
1

 

๋‚ด ๋ฌธ์ œ ํ’€์ด
let info = readLine()!.split(separator: " ").map({Int(String($0))!})
let nums = readLine()!.split(separator: " ").map({Int(String($0))!})
var sum = [0, nums[0]]

for i in 2...info[0] {
    sum.append(nums[i-1] + sum[i-1])
}

for _ in 0..<info[1] {
    let section = readLine()!.split(separator: " ").map({Int(String($0))!})
    print(sum[section[1]] - sum[section[0]-1])
}

๐Ÿ‘‰ dp ๋ฌธ์ œ๋กœ, ๋ฉ”๋ชจ์ด์ œ์ด์…˜ ๋ฐฉ์‹์„ ์ž˜ ํ™œ์šฉํ•ด์ฃผ๋Š”๊ฒŒ ํฌ์ธํŠธ!

์ฒ˜์Œ ์ด ๋ฌธ์ œ๋ฅผ ์ ‘ํ–ˆ์„ ๋•Œ๋Š”, ๊ทธ๋ƒฅ ๋ฐ˜๋ณต์œผ๋กœ ๋”ํ•ด์ฃผ๋ฉด๋˜๋Š”๊ฑฐ ์•„๋‹Œ๊ฐ€ ์™œ dp์ง€ใ…œ ํ–ˆ๋Š”๋ฐ

๊ทธ๋ ‡๊ฒŒ ํ•˜๋ฉด ์‹œ๊ฐ„์ดˆ๊ณผ!! ์•Œ๊ณ ๋ณด๋‹ˆ ์—ญ์‹œ๋‚˜ ๋ฉ”๋ชจ์ด์ œ์ด์…˜์œผ๋กœ ์ €์žฅํ•ด๋†“๊ณ  ๊ฐ’์„ ํ™œ์šฉํ•˜๋Š” ๋ฐฉ์‹์ด์—ˆ๋‹ค.

  • ์ฒซ for๋ฌธ์œผ๋กœ ์šฐ์„  1๋ถ€ํ„ฐ ๋๊นŒ์ง€ ๋ˆ„์  ๊ฐ’์„ ๋„ฃ๋Š” ๋ฐฐ์—ด์„ ์™„์„ฑํ•ด์ฃผ์—ˆ๋‹ค.
  • ๊ทธ๋ฆฌ๊ณ  ๋‘ ๋ฒˆ์งธ for๋ฌธ์—์„œ๋Š” ๊ตฌ๊ฐ„์„ ๋ฐ›์•„์˜ค๊ณ , ๋ฐ”๋กœ ๊ทธ์— ๋งž๋Š” ์—ฐ์‚ฐ ๊ฒฐ๊ณผ๋ฅผ ์ถœ๋ ฅํ•ด์ฃผ์—ˆ๋‹ค.
    (์˜ˆ๋ฅผ ๋“ค์–ด 1๋ถ€ํ„ฐ 3๊นŒ์ง€๋ฅผ ๊ตฌํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด, sum[3] - sum[0]์„ ํ•ด์ฃผ๋ฉด ์•Œ๋งž์€ ๊ฒฐ๊ณผ๋ฅผ ๊ตฌํ•  ์ˆ˜ ์žˆ๋‹ค.)

 

๐Ÿ’ก ํ”ผ๋“œ๋ฐฑ
  • ์—ญ์‹œ๋‚˜ DP๋ฌธ์ œ์˜ ํ•ต์‹ฌ์€ ์ค‘๋ณต์„ ํ”ผํ•ด์•ผ ํ•œ๋‹ค๋Š” ์ ์ธ ๊ฒƒ ๊ฐ™๋‹ค.
    DP๋ฌธ์ œ์—์„œ ์‹œ๊ฐ„์ดˆ๊ณผ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค๋ฉด, ์ค‘๋ณต์ ์ธ ์—ฐ์‚ฐ์ด ๊ณ„์†๋˜์ง€๋Š” ์•Š๋Š”์ง€ ํ™•์ธํ•ด๋ณผ๊ฒƒ!

 


๋ฌธ์ œ

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

๋Œ“๊ธ€