https://www.acmicpc.net/problem/2003
import sys
# with open("./data.txt", "r") as file:
# def input():
# return file.readline()
def input():
return sys.stdin.readline()
N, M = map(int, input().split(" "))
arr = list(map(int, input().split(" ")))
cnt = 0
total = 0
endPointer = 0
for startPointer in range(N):
while total < M and endPointer < N:
total += arr[endPointer]
endPointer += 1
if(total == M):
cnt += 1
total -= arr[startPointer]
print(cnt)
이건 브루트포스 문제라고 하긴 했는데, 사실상 투 포인터 문제였다.
이번 문제를 풀면서 처음 알게된건데
특정 수의 합을 구하기 위해서 시작, 마지막 인덱스를 조정해가며 찾는거다.
아래 블로그를 보고 참고했다.
https://butter-shower.tistory.com/226
어렵다..