개발놀이터

3-4. 연속 부분수열 본문

기타/코딩테스트

3-4. 연속 부분수열

마늘냄새폴폴 2023. 2. 18. 09:41

package 배열응용3장.연속부분수열3다시4.my;

import java.util.Scanner;

public class Main {

    /**
     * -내 풀이-
     * two pointers algorithm 을 이용해 풀었는데 내 코드가 더 깔끔한 것 같다. 선생님의 코드는 너무 복잡함
     * 피드백할 것은 없다.
     */

    public static void main(String[] args) {
        Scanner kb = new Scanner(System.in);
        int n = kb.nextInt();
        int m = kb.nextInt();
        int[] arr = new int[n];
        for (int i = 0; i < n; i++) {
            arr[i] = kb.nextInt();
        }

        System.out.println(solution(n, m, arr));
    }

    private static int solution(int n, int m, int[] arr) {
        int answer = 0, sum = 0;
        int start = 0, end = 0;

        while (start < n && end < n) {
            if (m <= sum) {
                // 1 2 1 3 1 1 1 2
                // m = 6 , sum =
                sum -= arr[start];
                start++;
            }
            else {
                // 1 2 3 4 5 6 7
                // m = 4 , sum = 3
                sum += arr[end];
                end++;
            }

            if (m == sum) {
                answer++;
            }
        }

        return answer;
    }
}

'기타 > 코딩테스트' 카테고리의 다른 글

3-6. 최대 길이 연속 부분수열  (0) 2023.02.18
3-5. 연속된 자연수의 합  (0) 2023.02.18
3-3. 최대 매출  (2) 2023.02.18
3-2. 공통 원소 구하기  (0) 2023.02.18
3-1. 두 배열 합치기  (0) 2023.02.18