해당 문제는 이전에 포스팅했던 부분합과 굉장히 유사하다.
부분합을 이미 풀어봤다면 아주 간단히 풀 수 있는 문제이다. 아래 코드를 보면 알겠지만, 이전에 풀었던 부분합과 매우 유사하다는걸 알 수 있다.
fun main() {
val (n, m) = readln().split(' ').map { it.toInt() }
val sequences = readln().split(' ').map { it.toInt() }
var result = 0
val accumeratedSequences = Array(n + 1) { 0 }
for (index in 1 until n + 1) {
accumeratedSequences[index] = sequences[index - 1] + accumeratedSequences[index - 1]
}
var start = 0
var end = 1
while (end < n + 1) {
if (accumeratedSequences[end] - accumeratedSequences[start] < m) {
end++
} else if (accumeratedSequences[end] - accumeratedSequences[start] == m) {
result++
end++
} else {
start++
}
}
println(result)
}