ํฌ ํฌ์ธํฐ๋ก ํ์ดํ๋ค. 2๊ฐ์ ํฌ์ธํฐ๊ฐ ์๋ค๊ณ ๊ฐ์ ํ๊ณ , p1 ~ p2๊น์ง์ ๊ฐ์ ๋ชจ๋ ํฉํ ๊ฐ์ sum ์ ์ ์ฅํ๊ฒ ๋๋๋ฐ p1๊ณผ p2๋ฅผ ์ ๋นํ ์กฐ์ ํด์ ๋ชฉํ๊ฐ์ ๋ง์ถ ์ ์๋ ๊ฒฝ์ฐ์ ์๊ฐ ๋ช๊ฐ๋ ๋๋์ง ์ฐพ๋ ๋ฌธ์ ์ด๋ค.
์์์ p1๊ณผ p2์ ์์น๊ฐ ๋์ผํ๋ค. ๋ชจ๋ ์๋ ์์ฐ์์ด๋ฏ๋ก ํฉ์ 0๋ณด๋ค ๋ฎ์ ์ ์๋ค. sum์ด ํด๋น ๋ชฉํ๊ฐ๋ณด๋ค ์์ ๊ฐ์ด๋ผ๋ฉด p2์ ์๋ ๊ฐ์ ๋ํ๊ณ p2๋ฅผ 1์ฆ๊ฐ์ํจ๋ค.
์ด์ sum์ 1์ด ๋๋ค. ํ์ง๋ง ๋ชฉํ๊ฐ์ธ 2๋ณด๋ค๋ ์๋ค. ๋ค์ p2์ ์๋ ๊ฐ์ ๋ํ๋ค.
์ด์ sum์ ๋ชฉํ๊ฐ์ด ๋์๋ค. answer๋ฅผ ์ฆ๊ฐ์์ผ์ฃผ๊ฒ ๋๋ค.
ํด๋น ํฉ์ด ๋ชฉํ๊ฐ์ ๋๋ฌํ๊ฒ ๋๊ฑฐ๋, ๊ทธ ๊ฐ์ ๋์ด์๊ฒ ๋๋ฉด ์ํ๋ ๊ฐ๋ค์ ๋นผ์ค์ผ ํ๋ค. ์ด๋ p1์ ์ด์ฉํ๋ค. p1์ ์๋ ๊ฐ์ ๋นผ์ฃผ๊ณ p1์ ์ฆ๊ฐ์ํจ๋ค.
ํด๋น ๊ณผ์ ์ p2์ ๊ฐ์ด ๋ฐฐ์ด์ ์ธ๋ฑ์ค๋ฅผ ๋์ด์๊ฒ ๋์๋๋ฐ sum์ด ๋ชฉํ๊ฐ๋ณด๋ค ์์ ๋๊น์ง ์งํ๋๋ค. ๋ชฉํ๊ฐ๋ณด๋ค ํฌ๋ค๋ฉด p1์ ์ฆ๊ฐ์์ผ์ ๊ณ์ ๋นผ์ฃผ๋ฉด ๋์ง๋ง ๋ชฉํ๊ฐ๋ณด๋ค ํฌ๋ฉด p2์ ๊ณ์ ์ฆ๊ฐ์์ผ์ผ ํ๋๋ฐ ์ด๋ ๋ถ๊ฐ๋ฅํ๊ธฐ ๋๋ฌธ์ด๋ฉฐ ๋ ์ฆ๊ฐ์์ผ๋ดค์ ๊ฐ๋ฅํ ๊ฒฝ์ฐ์ ์๊ฐ ์๊ธฐ ๋๋ฌธ์ด๋ค.
package Baekjoon.Silver;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
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 < arr.length; i++) {
arr[i] = Integer.parseInt(st.nextToken());
}
int p1 = 0; int p2 = 0;
int sum = 0;
int answer = 0;
while (!(sum < M && p2 >= N)) {
if (sum == M) answer++;
if (sum >= M) {
sum -= arr[p1];
p1++;
} else {
sum += arr[p2];
p2++;
}
System.out.println(p1 + " " + p2 + " " + sum);
}
System.out.println(answer);
}
}