https://www.acmicpc.net/problem/2003
left~right(이전 값까지) 합하며
결과값이 M과 같은지 비교하도록 풀이했다.
right 이전값까지 합해주므로 조건문을 잘 설정해야하는데
처음에는 break문을 잘못 걸어줘서 계속 틀렸다 ㅜㅜ
내가 찾은 반례는 다음과 같다!
10 8 3
1 1 1 1 1 1 2 2 2
Answer: 4 (답)
내 출력값: 3
import java.io.*;
import java.util.*;
public class Main {
public static void main(String[] args) throws IOException {
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());
st = new StringTokenizer(br.readLine());
int[] arr = new int[N];
for(int i=0;i<N;i++){
arr[i] = Integer.parseInt(st.nextToken());
}
int left = 0, right = 0;
int sum = 0;
int cnt = 0;
while(true){
if(sum<M){
if(right==N) break;
sum += arr[right++];
} else {
sum -= arr[left++];
}
if(sum == M){
cnt++;
}
}
System.out.println(cnt);
}
}
'스터디 > Algorithm' 카테고리의 다른 글
[백준] 암벽 등반 2412 java -bfs (1) | 2024.09.16 |
---|---|
[백준] 합이 0 3151 java - 투포인터 (2) | 2024.09.15 |
[백준] ABCDE 13923 java - dfs (1) | 2024.08.21 |
[백준] 퇴사2 15486 java - dp (3) | 2024.06.20 |
[백준] 말이 되고픈 원숭이 1600 java - bfs (1) | 2024.06.20 |