[Inflearn] Java 알고리즘 : 4. 연속 부분수열

Updated:

https://inf.run/EzFW


Solution

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;

class Main {
    static int returnCases(int N, int M, int[] input) {
        int answer = 0, sum = 0, lt = 0;
        for (int rt = 0; rt < N; rt++) {
            sum += input[rt];
            if (sum == M) {
                answer++;
            }
            while (sum >= M) {
                sum -= input[lt++];
                if (sum == M) {
                    answer++;
                }
            }
        }

        return answer;
    }

    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringTokenizer st = new StringTokenizer(br.readLine(), " ");
        int N = Integer.parseInt(st.nextToken());
        int M = Integer.parseInt(st.nextToken());

        st = new StringTokenizer(br.readLine(), " ");
        int[] input = new int[N];
        for (int i = 0; i < N; i++) {
            input[i] = Integer.parseInt(st.nextToken());
        }
        System.out.print(returnCases(N, M, input));
        br.close();
    }
}

Leave a comment