def p():
n, s = [int(v) for v in input().split()]
n_list = list(map(int, input().split()))
s_list = [0] * n
s_list[0] = n_list[0]
for i in range(1, n):
s_list[i] = s_list[i-1] + n_list[i]
s_list = [0] + s_list
left, right = 0, 1
result = []
while right < n+1:
tmp = s_list[right] - s_list[left]
if tmp >= s:
result.append(right - left)
left += 1
continue
else:
right += 1
if len(result):
return min(result)
else:
return 0
print(p())
누적 합과 투 포인터 알고리즘을 사용해서 해결한 문제
이 문제의 경우 아무리 투포인터를 사용한다고 해도 합을 매번 구하려면 연산량이 너무 많아진다.
따라서 누적합을 미리 구해놓고 투 포인터를 사용하여 해결한다.