์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- Swift
- ๋ธ๋ฃจํธํฌ์ค
- ios
- ์ด์งํ์
- ์คํ
- ์ ํด๋ฆฌ๋ ํธ์ ๋ฒ
- dp
- WebApp
- WebView
- ๋ธ๋ฃจํธํฌ์ค ์๊ณ ๋ฆฌ์ฆ
- ์ฝ๋ฉํ ์คํธ
- ๋ฌธ์์ด
- ๋ถํ ํ์
- SwiftUI
- ๋ฐฑํธ๋ํน
- ๋์ ํฉ
- dfs
- ๋ฐฑ์ค
- ๋นํธ์ฐ์ฐ์
- BFS
- ์์
- ์๊ณ ๋ฆฌ์ฆ
- ๋ถํ ์ ๋ณต
- ๋ถํ ์ ๋ณต
- Queue
- ๊ทธ๋ฆฌ๋ ์๊ณ ๋ฆฌ์ฆ
- ํ๋ก๊ทธ๋๋จธ์ค
- ์ฝํ
- Today
- Total
MUKER_DEV with iOS
[swift] ๋ฐฑ์ค - 11659๋ฒ: ๊ตฌ๊ฐ ํฉ ๊ตฌํ๊ธฐ 4 ๋ณธ๋ฌธ
[swift] ๋ฐฑ์ค - 11659๋ฒ: ๊ตฌ๊ฐ ํฉ ๊ตฌํ๊ธฐ 4
MUKER 2023. 3. 7. 19:4811659๋ฒ: ๊ตฌ๊ฐ ํฉ ๊ตฌํ๊ธฐ 4
์ฒซ์งธ ์ค์ ์์ ๊ฐ์ N๊ณผ ํฉ์ ๊ตฌํด์ผ ํ๋ ํ์ M์ด ์ฃผ์ด์ง๋ค. ๋์งธ ์ค์๋ N๊ฐ์ ์๊ฐ ์ฃผ์ด์ง๋ค. ์๋ 1,000๋ณด๋ค ์๊ฑฐ๋ ๊ฐ์ ์์ฐ์์ด๋ค. ์ ์งธ ์ค๋ถํฐ M๊ฐ์ ์ค์๋ ํฉ์ ๊ตฌํด์ผ ํ๋ ๊ตฌ๊ฐ i์ j
www.acmicpc.net
์ ๋ต ํ์ด
let NM = readLine()!.split(separator: " ").map { Int($0)! }
let arr = readLine()!.split(separator: " ").map { Int($0)! }
var sumArr = Array(repeating: 0, count: arr.count+1)
for i in 0..<arr.count {
sumArr[i+1] = sumArr[i] + arr[i]
}
for _ in 0..<NM[1] {
var i = readLine()!.split(separator: " ").map { Int($0)! }
print(sumArr[i[1]] - sumArr[i[0]-1])
}
ํด๋น ๋ฌธ์ ๋ ๋์ ํฉ(prefix sum) ๋ฌธ์ ๋ค.
ํด๋น๋ฌธ์ ๋ N์ด ์ต๋ 10๋ง, M์ด ์ต๋ 10๋ง์ด ์ ๋ ฅ๋ ์ ์์ด
10๋ง * 10๋ง = 1์ต ๋ฒ์ ์๋ํ ๋๊ธฐ์ N^2์ธ ์์ ํ์์ ์๋๊ณ
์ด๋ป๊ฒ๋ 10๋ง์ O(log n)์ด๋ O(1)๋ก ํ์ด๋ด์ผ ํ๋ค.
let NM = readLine()!.split(separator: " ").map { Int($0)! }
let arr = readLine()!.split(separator: " ").map { Int($0)! }
for _ in 0..<NM[1] {
let ij = readLine()!.split(separator: " ").map { Int($0)! }
var sum = 0
for i in ij[0]...ij[1] {
sum += arr[i-1]
}
print(sum)
}
ํด๋น ์ฝ๋๋ ์ต์ ์ ๊ฒฝ์ฐ 10๋ง * 10๋ง์ด๊ธฐ์ ์๊ฐ์ด๊ณผ๊ฐ ๋๋ค.
์ข์ ๋ฐฉ๋ฒ์ ๋ฏธ๋ฆฌ ๋ฐฐ์ด์ ๋ง๋ค์ด ๋๊ณ ๋์ ๋๋ ํฉ์ ์ ์ฅ์์ผ ๋๋ ๊ฑด๋ฐ
์์๋ฌธ์ ๋ก ์ค๋ช ํ์๋ฉด
๋์ ํฉ์ ๊ตฌํด์ผ ํ๋ ๋ฐฐ์ด(arr) [5,4,3,2,1]์ด ์ฃผ์ด์ง๋ค.
์ฒซ ๋ฒ์งธ๋ก arr์ count์ + 1๋งํผ 0์ผ๋ก ์ฑ์์ง sumArr๋ฐฐ์ด์ ๋ง๋ค์ด์คฌ๋ค.
sumArr = [0,0,0,0,0,0] ํํ๊ฐ ๋๋ค.
for i in 0..<arr.count {
sumArr[i+1] = sumArr[i] + arr[i]
}
ํด๋น ์ฝ๋๋ index๋ฅผ ์ด์ฉํด ๋์ ๋๋ ํฉ์ sumArr์ ์ ์ฅ์์ผ ์ค๋ค.
ํด๋น ๋ฐ๋ณต์ด ๋๋๋ค๋ฉด sumArr๋
[0,5,9,12,14,15]๋ก ๋์ ํฉ์ ์ ์ฅํ๋ ๋ฐฐ์ด์ด ๋ง๋ค์ด์ง๋ค.
ํด๋น ๋ฐ๋ณต์ ์ต๋ 10๋ง์ด ๋ ๊ฒ์ด๋ค.
๋ค์์ผ๋ก, ์ฃผ์ด์ง ๋ฌธ์ ๋ฅผ ํ๊ธฐ ์ํด M๋งํผ ๋ฐ๋ณตํ๊ฒ ๋๋๋ฐ
์ค์ฒฉ for๋ฌธ์ด์๋ค๋ฉด N * M์ด์๊ฒ ์ง๋ง
์ง๊ธ์ ๋ฏธ๋ฆฌ ๋ง๋ค์ด๋ ๋ฐฐ์ด ๋์ N + M์ด ๋๋ค.
10๋ง ๋ฒ์ ๋ฐ๋ก๋๊ณ 10๋ง๋ฒ์ ๋ฐ๋ก ๋์
์ต๋ 20๋ง ๋ฒ์ ๋ฐ๋ณต ํ์๋ก ์ค์๋ค.
for _ in 0..<NM[1] {
var i = readLine()!.split(separator: " ").map { Int($0)! }
print(sumArr[i[1]] - sumArr[i[0]-1])
}
M๋งํผ ๋ฐ๋ณตํ๋ฉฐ ์ฃผ์ด์ง ์ ๋ ฅ๊ฐ ๋ฒ์์ ํฉ์ ๊ตฌํ๊ธฐ ์ํด์
ํด๋น ์ฝ๋๋ก ๊ตฌํํ๋ค.
'๐ค ์๊ณ ๋ฆฌ์ฆ > BAEKJOON' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[swift] ๋ฐฑ์ค - 17298๋ฒ: ์คํฐ์ (0) | 2023.03.14 |
---|---|
[swift] ๋ฐฑ์ค - 1715๋ฒ: ์นด๋ ์ ๋ ฌํ๊ธฐ (0) | 2023.03.12 |
[swift] ๋ฐฑ์ค - 17219๋ฒ: ๋น๋ฐ๋ฒํธ ์ฐพ๊ธฐ (0) | 2023.03.06 |
[swift] ๋ฐฑ์ค - 1012๋ฒ: ์ ๊ธฐ๋ ๋ฐฐ์ถ (0) | 2023.03.03 |
[swift] ๋ฐฑ์ค - 1003๋ฒ: ํผ๋ณด๋์น ํจ์ (0) | 2023.03.01 |