문제 링크
문제 해설
누적합과 부분합에 대한 기본적인 문제에 정렬이 추가되었다고 볼 수 있다. 입력 받은 배열을 오름차순으로 정렬한 후 각 인덱스에 대한 누적 합 배열을 생성하여 테스트 케이스 별로 \(L\)과 \(R\) 사이의 부분 합을 출력해주면 된다.
Code
import java.util.StringTokenizer
fun main() = with(System.`in`.bufferedReader()) {
val bw = System.out.bufferedWriter()
val (n, q) = readLine().split(' ').map { it.toInt() }
val st = StringTokenizer(readLine())
val arr = IntArray(n) { st.nextToken().toInt() }.sortedArray()
val prefixSum = IntArray(n + 1)
for (i in 1..n) {
prefixSum[i] = prefixSum[i - 1] + arr[i - 1]
}
var l: Int
var r: Int
repeat(q) {
StringTokenizer(readLine()).apply {
l = nextToken().toInt()
r = nextToken().toInt()
}
bw.write("${prefixSum[r] - prefixSum[l - 1]}\n")
}
bw.close()
}
참조 링크
누적합(Prefix Sum)과 부분합(Partial Sum) with Kotlin
'Algorithm > BOJ' 카테고리의 다른 글
[Kotlin] 백준 18917 : 수열과 쿼리 38 (1) | 2023.01.03 |
---|---|
[Kotlin] 백준 1490 : 자리수로 나누기 (0) | 2022.12.29 |
[Kotlin] 백준 25325 : 학생 인기도 측정 (0) | 2022.12.25 |
[Kotlin] 백준 1092 : 배 (0) | 2022.12.24 |
[Kotlin] 백준 1456 : 거의 소수 (1) | 2022.12.23 |
댓글