# BOJ02003 수들의 합 2

https://www.acmicpc.net/problem/2003 (opens new window)

N개의 수로 된 수열 A[1], A[2], …, A[N] 이 있다. 이 수열의 i번째 수부터 j번째 수까지의 합 A[i] + A[i+1] + … + A[j-1] + A[j]가 M이 되는 경우의 수를 구한다.

# 투 포인터

투 포인터 (opens new window)

# 제출 코드

아래는 최종 제출 코드이다.

import java.util.Scanner;

public class BOJ2003 {

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

        int n = scanner.nextInt(); // 10 <= n < 100_000
        // 0 < S <= 300_000_000. int 표현범위 -2,147,483,648 ~ 2,147,483,647
        int s = scanner.nextInt(); 

        int[] array = new int[n];
        for (int i = 0; i < n; i++) {
            array[i] = scanner.nextInt();
        }

        int start = 0;
        int end = 0;
        int sum = array[0];
        int count = 0;
        while (true) {
            if (sum >= s) {

                if (sum == s) {
                    count++;
                }

                sum -= array[start++];
            } else {
                end++;

                if (end == n) {
                    break;
                }

                sum += array[end];
            }
        }

        System.out.println(count);
    }
}
#BOJ #두 포인터
last updated: 11/2/2021, 2:18:01 PM