728x90
2003번: 수들의 합 2
첫째 줄에 N(1 ≤ N ≤ 10,000), M(1 ≤ M ≤ 300,000,000)이 주어진다. 다음 줄에는 A[1], A[2], …, A[N]이 공백으로 분리되어 주어진다. 각각의 A[x]는 30,000을 넘지 않는 자연수이다.
www.acmicpc.net
* 생각해야 할 점 :
1. 수열을 정렬하면 안됨.
2. p2하나만 써도 됨.p1을 for의 i가 대신 해줌. for문 안에 while문으로 조건 검사
total += arr[p2++] 을 하면서 중간에 total == M이면 다음 p1으로 넘어감
나는 while문 밖에 total==M인 조건 검사를 해줬는데 틀렸다고 함.
p2한 번이 씹히는 거 같음.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class TwoPointer_03 {
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 arr[] = new int[N];
st = new StringTokenizer(br.readLine());
for (int i = 0; i < N; i++) {
arr[i] = Integer.parseInt(st.nextToken());
}
int answer = 0;
for (int i = 0; i < N; i++) {
int p2 = i;
int total = 0;
while (p2 < N && total < M) {
total += arr[p2++];
if (total == M) {
answer++;
break;
} else if (total > M) {
break;
}
}
}
System.out.println(answer);
}
}
'알고리즘 > 백준' 카테고리의 다른 글
(백준/자바) 힌트문제3 04. 다이나믹 프로그래밍 - 백준 1890번 문제 : 점프 (0) | 2023.08.06 |
---|---|
(백준/자바) 백준 3273번 문제 : 두 수의 합 (0) | 2023.08.06 |
(백준/자바) 힌트문제3 02. 2차원배열 - 백준 2167번 문제 : 2차원 배열의 합 (0) | 2023.08.06 |
(백준/자바) 힌트문제3 01. 팰린드롬 - 백준 1254번 문제 : 팰린드롬 만들기 (0) | 2023.08.06 |
(백준/자바) 힌트문제2 05. 트리 - 백준 11725번 문제 : 트리의 부모 찾기 (0) | 2023.07.26 |