Q. N개의 수로 된 수열 A[1], A[2], ... , A[N]이 있다. 이 수열의 i번째 수부터 j번째 수까지의 합 A[i]+A[i+1]+..+A[j-1]+A[j]가 M이 되는 경우의 수를 구하는 프로그램을 작성하시오.
N, M = map(int,input("몇 개의 수(N)을 입력할지,목표값 M을 입력하세요: ").split())
a=list(map(int,input("고른 N개의 수를 나열해주세요: ").split()))
lt=0
rt=1
tot = a[0] #lt~rt 직전까지의 인접한 값들의 합
cnt = 0 #경우의 수
while True:
if tot<M:
if rt<N:
tot += a[rt]
rt +=1
else:
break
elif tot==M:
cnt+=1
tot -= a[lt] #a[lt]값을 계속해서 누적하면 안되므로
lt+=1
else:
tot-=a[lt]
lt+=1
print(cnt)