1. 문제
2. 접근법
배열 구간에서 특정 값이 나올 경우의 수를 구하는 문제이므로 투포인터 문제이다.
A 배열에 1 1 1 1값들을 저장한 후
Start_Pointer와 End_Pointer를 만들고
1. 현재 값이 M 값보다 같거나 클 경우 Start_Pointer를 뺀 후 증가시킨다.
2. End_Pointer가 배열의 끝에 도달할 경우 종료
3. 현재 값이 M 값보다 작거나 같을 경우 End_Pointer를 더한 후 증가 시킨다.
4. 현재 값이 M 값과 같을 경우 count ++를 해준다.
3. 코드
package week08;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class Baek2003 {
public static void main(String[] args) throws IOException {
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer stringTokenizer = new StringTokenizer(bufferedReader.readLine());
int N = Integer.parseInt(stringTokenizer.nextToken());
int M = Integer.parseInt(stringTokenizer.nextToken());
stringTokenizer = new StringTokenizer(bufferedReader.readLine());
int[] A = new int[N];
for(int i=0; i<N; i++){
A[i] = Integer.parseInt(stringTokenizer.nextToken());
}
int count = 0;
int sum = 0;
int start_pointer = 0;
int end_pointer = 0;
while(true){
if(sum >= M){
sum -= A[start_pointer++];
}else if(end_pointer == N){
break;
}else{
sum += A[end_pointer++];
}
if(sum == M){
count++;
}
}
System.out.println(count);
}
}
'📖Algorithm > TwoPointer' 카테고리의 다른 글
자바 [Algorithm] 투포인터 - 백준 11728 배열 합치기 (0) | 2024.06.09 |
---|---|
자바 [Algorithm] 투포인터 - 백준 2018 수들의 합 5 (0) | 2024.06.09 |