https://www.acmicpc.net/problem/2003
투 포인터 첨 푸는 거라 보고했다 어쩔??
굉장히 상세하게 설명 해줬으니 밑에 참고 하시길..
https://m.blog.naver.com/kks227/220795165570
package algo;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class BJ_2003 {
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());
int [] a = new int [N]; //입력 배열
int res = 0; //결과 값
int s = 0; //포인터 start, end
int e = 0;
int sum = s+e;
st = new StringTokenizer (br.readLine());
for(int i=0; i<N; i++) {
a[i] = Integer.parseInt(st.nextToken());
}
while(true) {
if(sum >= M) { //합이 M 보다 크거나 같으면
sum -= a[s++]; //시작 값을 하나 증가시키고 그 배열 값을 뺀다
}else if(e == N) { //end 값이 배열 끝까지 가면 break
break;
}else { //합이 M 보다 작으면 end 값 증가시키고 이 배열 값을 더해준다
sum += a[e++];
}
if(sum == M) { //합이랑 M이 같을 때 결과 값 증가
res++;
}
}
System.out.println(res);
}
}
------------------------------------------------------------------------------------------
투 포인터 잊지 말자! 담엔 내 스스로 풀기
'백준알고리즘' 카테고리의 다른 글
백준 1806 부분합[투 포인터] (0) | 2020.04.20 |
---|---|
백준 2096 내려가기 [DP][슬라이딩 윈도우] (0) | 2020.04.19 |
백준 11403 경로 찾기 (0) | 2020.04.17 |
백준 2577 배열 숫자의 갯수 (0) | 2020.03.19 |
백준 10818 배열 최소, 최대 (0) | 2020.03.18 |
댓글