https://www.acmicpc.net/problem/2003
투 포인터의 대표 문제 ! ☝🏻
0. 입력 받기
n, m = map(int,input().rsplit())
nums = list(map(int,input().rsplit()))
1. 투 포인터를 움직이면서 값 비교하기
l 포인터
는 for문으로 호출한다.hap
이 m
보다 작고, r 포인터
가 범위 내에 있는 동안에 해당되는 요소들을 hap
에 더한다.hap
이 m
과 같다면 answer += 1
hap
에서 l 포인터
가 가리키는 숫자를 빼준다.l, r = 0, 0
answer, hap = 0, 0
# l을 차례대로 증가시키며 반복
for l in range(n):
# r을 가능한만큼 움직이기
while hap < m and r < n:
hap += nums[r]
r += 1
# 부분 합이 m일 때 카운트 증가
if hap == m:
answer += 1
# m보다 hap이 크거나 같으므로 l 한칸 이동
hap -= nums[l]
n, m = map(int,input().rsplit())
nums = list(map(int,input().rsplit()))
l, r = 0, 0
answer, hap = 0, 0
for l in range(n):
while hap < m and r < n:
hap += nums[r]
r += 1
if hap == m:
answer += 1
hap -= nums[l]
print(answer)