Algorithm
[Swift 백준] 17390 이건 꼭 풀어야 해!
Kim Roks
2025. 2. 12. 13:01
https://www.acmicpc.net/problem/17390
풀이 아이디어
오늘도 구간합 문제입니다.
a to b 구간의 구간합은
b 까지의 구간 합 - (a - 1) 까지의 구간합 이란걸 그대로 적용하면 됩니다, 다만 문제 중간에 정렬을 요구하니 그 부분만 유의해주시면 됩니다
풀이
let nq = readLine()!.split(separator: " ").map{Int($0)!}
let (n,q) = (nq[0], nq[1])
var arr = readLine()!.split(separator: " ").map{Int($0)!}
// 비내림차순(오름차순) 정렬
arr.sort {
return $0 < $1
}
// 인덱스를 편히 쓰기위해 맨앞에 0 추가
var prefix = [0] + Array(repeating: 0, count: n)
//인덱스 주의
for i in 1...n {
prefix[i] = prefix[i - 1] + arr[i - 1]
}
for _ in 0..<q {
let ab = readLine()!.split(separator: " ").map{Int($0)!}
let (a,b) = (ab[0], ab[1])
// b까지의 구간합 - (a-1)까지의 구간합
let result = prefix[b] - prefix[a - 1]
print(result)
}