Algorithm/inflearn

★연속 부분수열

마닐라 2021. 9. 14. 22:38

 

import java.util.*;

class Main {
    public static int solution(int n, int m, int[] arr){
        //합이 M이 되는 수열의 갯수
        int answer = 0;
        //원소들의 합
        int sum = 0;
        int lt = 0, rt = 0;

        while(rt < n) {
            //계속 더해!
            sum += arr[rt++];
            //더하다가 m이 되면 ++
            if(sum == m) answer++;
            //같거나 클때는 빼줘야함.
            while(sum >= m) {
                sum -= arr[lt++];
                //빼고나서 합이 m이 될 수도 있음
                if(sum == m) answer++;
            }
        }
        System.out.println(answer);
        return answer;
    }

    public static void main(String[] args) {
        Scanner kb = new Scanner(System.in);

        int n = kb.nextInt();
        int m = kb.nextInt();
        int[] arr1 = new int[n];
        for (int i = 0; i < n; i++) {
            arr1[i] = kb.nextInt();
        }
        solution(n, m, arr1);
    }
}

 

'Algorithm > inflearn' 카테고리의 다른 글

★최대 길이 연속부분수열  (0) 2021.09.15
연속된 자연수의 합(two pointers)  (0) 2021.09.14
★공통원소 구하기  (0) 2021.09.13
#★두 배열 합치기  (0) 2021.09.13
★★멘토링  (0) 2021.09.10