반응형
문제
https://www.acmicpc.net/problem/2003
풀이
투 포인터를 이용한다. r 인덱스를 늘리면서 합을 구하고 m 값과 같은지 확인한다. l 인덱스가 증가할 때는 이전 l 인덱스에 있던 값을 빼준다.
코드
java
import java.util.Scanner;
public class Main {
static int n, m;
static int[] a;
public static void main(String[] args) {
input();
solve();
}
private static void solve() {
int r = 0, cnt = 0, sum = 0;
for (int l = 1; l <= n; l++) {
sum -= a[l - 1];
while (r + 1 <= n && sum < m) {
r++;
sum += a[r];
}
if (sum == m)
cnt++;
}
System.out.println(cnt);
}
private static void input() {
Scanner sc = new Scanner(System.in);
n = sc.nextInt();
m = sc.nextInt();
a = new int[n + 1];
for (int i = 1; i <= n; i++) {
a[i] = sc.nextInt();
}
sc.close();
}
}
반응형
'BOJ' 카테고리의 다른 글
백준 1620 - 나는야 포켓몬 마스터 이다솜 (0) | 2022.11.18 |
---|---|
백준 2559 - 수열 (0) | 2022.03.20 |
백준 2110 - 공유기 설치 (0) | 2022.03.11 |
백준 1068 - 트리 (0) | 2022.03.10 |
백준 1759 - 암호 만들기 (0) | 2022.03.02 |