반응형
import java.io.BufferedReader
import java.io.InputStreamReader
import java.util.*
var start = 0
var count = 0
var sum = 0
fun main(args: Array<String>) {
val br =
BufferedReader(InputStreamReader(System.`in`))
val line = br.readLine()
val n = line.split(" ").toTypedArray()[0].toInt()
val m = line.split(" ").toTypedArray()[1].toInt()
val arr = IntArray(n)
val st = StringTokenizer(br.readLine())
for (i in 0 until n) {
arr[i] = st.nextToken().toInt()
}
for (i in arr.indices) {
val num = arr[i]
sum += num
if (sum > m) {
setSum(arr, m)
} else if (sum == m) {
count++
sum -= arr[start++]
}
}
println(count)
}
fun setSum(arr: IntArray, m: Int) {
while (sum>m) {
sum -= arr[start++]
if (sum == m) {
count++
}
}
}
투포인터 문제이다.
start라는 포인터를 두어 해당 연속된 수들의 합이 m이랑 같거나 크게 되면 포인터를 증가시킨다.
m보다 클 경우는 m보다 작을 때까지 start를 증가시킨다.
반응형
'알고리즘' 카테고리의 다른 글
카카오 블라인드 2020 문자열 압축 코틀린 (0) | 2020.09.06 |
---|---|
백준 1806 부분합 코틀린 (0) | 2020.07.05 |
dfs 프로그래머스 네트워크 (0) | 2020.05.17 |
스택) 백준 9935번: 문자열 폭발 코틀린 (0) | 2020.05.01 |
프로그래머스 기능개발 코틀린 (0) | 2020.01.19 |