구현 방식
- 두 포인터 알고리즘 사용
- 포인터 위치를
i
, j
라고 했을 때 j
가 1 증가하면 현재 위치 값을 더해준다.
i = 0
j = 0 (+ arr[1]) j = 1 (+ arr[1]), j = 2 (+ arr[2]) , j = 3 (+ arr[3]) ...
...
i = 3
j = 3 (+ arr[3]), j = 4 (+ arr[4]) , j = 5 (+ arr[5])
코드
int main() {
int arr[MAXSIZE];
int N, M;
cin >> N >> M;
for (int i = 0; i < N; i++)
cin >> arr[i];
solution(arr, N, M);
return 0;
}
void solution(const int* ptr, int N, int M)
{
int currSum;
int counter = 0;
for (int i = 0; i < N; i++)
{
currSum = 0;
for (int j = i; i < N; j++)
{
currSum += *(ptr + j);
if (currSum == M)
{
counter++;
break;
}
else if (M < currSum) break;
}
}
cout << counter;
}