[백준] 수들의 합 2 (2003)(kotlin)

문제 설명

백준 2003번 문제 링크

입력 및 출력

» 입력

첫째 줄에 N(1 ≤ N ≤ 10,000), M(1 ≤ M ≤ 300,000,000)이 주어진다. 다음 줄에는 A[1], A[2], …, A[N]이 공백으로 분리되어 주어진다. 각각의 A[x]는 30,000을 넘지 않는 자연수이다.

» 출력

첫째 줄에 경우의 수를 출력한다.

예제 입출력(테스트케이스)

입력 출력
4 2
1 1 1 1
3
10 5
1 2 3 4 2 5 3 1 1 2
3

문제 풀이1

fun main(args: Array<String>) = with(System.`in`.bufferedReader()) {
    val (n, m) = readLine().split(" ").map { it.toInt() }
    val arr = readLine().split(" ").map { it.toInt() }

    var count = 0
    var s = 0
    var e = 0
    var sum = 0

    while (true) {
        if (sum >= m)
            sum -= arr[s++]
        else if (e == n)
            break
        else
            sum += arr[e++]

        if (sum == m)
            count++
    }

    println(count)
}