2003 - 수들의 합 2
📌 문제
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().split())
arr = list(map(int, input().split()))
i, j = 0, 1
result = 0
while i <= N-1 and j <= N:
if sum(arr[i:j+1]) > M:
i += 1
elif sum(arr[i:j+1]) < M:
j += 1
else:
i += 1
j += 1
result += 1
print(result)
💡 한마디
이 문제 역시 구간 합을 구하는 문제이다. i, j 투 포인터를 움직여가며 풀었다.