๋ฌธ์ ์ค๋ช
์ 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๋ฌธ์ ์์ ์๊ฐ์ด๊ณผ๊ฐ ๋ฐ์ํ๋ค๋ฉด, ์ค๋ณต์ ์ธ ์ฐ์ฐ์ด ๊ณ์๋์ง๋ ์๋์ง ํ์ธํด๋ณผ๊ฒ!
๋ฌธ์
'3๏ธโฃ Swift > Problem Solving' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Swift Algorithm] ํ ํธ๋ก๋ฏธ๋ ธ BOJ #14500 (2) | 2022.01.19 |
---|---|
[Swift Algorithm] ์ด์ค์ฐ์ ์์ํ Programmers(Lv.3) (0) | 2021.12.21 |
[Swift Algorithm] 2รn ํ์ผ๋ง BOJ #11726 (0) | 2021.10.20 |
[Swift Algorithm] RGB๊ฑฐ๋ฆฌ BOJ #1149 (0) | 2021.10.20 |
[Swift Algorithm] ๊ณ๋จ ์ค๋ฅด๊ธฐ BOJ #2579 (0) | 2021.10.19 |
๋๊ธ