Notice
Recent Posts
Recent Comments
Link
«   2025/03   »
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31
Tags
more
Archives
Today
Total
관리 메뉴

끄적끄적

백준 [2003] 수들의 합 2 - 투포인터 본문

코테준비

백준 [2003] 수들의 합 2 - 투포인터

alstj_성공 2021. 7. 14. 18:24

출처 : https://www.acmicpc.net/problem/2003

 

수들의 합 2 

 

0.5 초 128 MB 24912 12103 7911 49.137%

문제

N개의 수로 된 수열 A[1], A[2], …, A[N] 이 있다. 이 수열의 i번째 수부터 j번째 수까지의 합 A[i] + A[i+1] + … + A[j-1] + A[j]가 M이 되는 경우의 수를 구하는 프로그램을 작성하시오.

입력

첫째 줄에 N(1 ≤ N ≤ 10,000), M(1 ≤ M ≤ 300,000,000)이 주어진다. 다음 줄에는 A[1], A[2], …, A[N]이 공백으로 분리되어 주어진다. 각각의 A[x]는 30,000을 넘지 않는 자연수이다.

출력

첫째 줄에 경우의 수를 출력한다.

예제 입력 1 

4 2

1 1 1 1

예제 출력 1 

3

예제 입력 2 

10 5

1 2 3 4 2 5 3 1 1 2

예제 출력 2 

3

 

 

-조건 처리 주의!-

맨 처음 조건에 sum==m 조건이 있지만 아무것도 처리해주지 않으므로 

밑에 sum<=m 으로 같이 처리해줘야 한다.

두 포인터가 전부 끝에 도달하면 while문을 탈출해주며,

ptr2가 맨 끝에 있을때는 증가 시키지 않고 ptr1만 증가시켜준다.

또한, ptr1과 ptr2가 같은 위치에 있을 경우 ptr2를 증가시켜줌!