less than 1 minute read

[no-alignment]

구현 방식

  • 두 포인터 알고리즘 사용
  • 포인터 위치를 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;
}