최대 1 분 소요



https://www.acmicpc.net/problem/2003



🔍 문제 풀이

문제 도식화

투 포인터 사용!

sum < m 일때 오른쪽 포인터(e) 이동하면서 값을 늘리고, sum > m 일때 왼쪽 포인터(s) 이동하면서 값을 줄임 (투 포인터 개념)

assets/images/2025/2003.jpg



💻 코드

전체 코드

import java.io.*;
import java.util.*;

public class Main {
    public static void main(String[] args) throws Exception {
        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());

        int[] arr = new int[n];
        st = new StringTokenizer(br.readLine());
        for(int i=0; i<n; i++) {
            arr[i] = Integer.parseInt(st.nextToken());
        }

        int s = 0, e = 0, sum = 0, cnt = 0;
        while(true){
            if(sum >= m){
                if(sum == m) cnt++;
                sum -= arr[s++];
            }else{
                if(e == n) break;
                sum += arr[e++];
            }
        }

        System.out.println(cnt);
    }
}


카테고리:

업데이트:

댓글남기기