백준 2003 수들의 합 2 / C++

이유참치·2025년 12월 15일

백준

목록 보기
59/248

문제 : 2003

풀이 point

투 포인터를 활용하여 푼다. 값을 더해나가면서 M보다 크면 바로 종료하는 식으로 진행한다.
(M에 마이너스가 올 수 없고, N의 범위가 10,000이라 가능)

풀이 방법

투포인터를 구현한다.

코드

//백준 2003, 수들의 합 2

#include <iostream>

int main (){

    int N, M;
    int nums[10'000];
    std::cin >> N >> M;
    for(int i{0}; i<N; ++i){
        std::cin >> nums[i];
    }
    int ans{0};
    for(int i{0}; i<N; ++i){
        int j{i}; int sum{0};
        if(nums[i] == M){
            ++ans;
            continue;
        }
        while(j<N){
            if(sum + nums[j] == M){
                ++ans;
                break;
            }
            else if(sum + nums[j] > M) break;
            else{
                sum += nums[j];
                ++j;
            }
        }
    }

    std::cout << ans;

    return 0;
}
profile
임아리 - 대학생

0개의 댓글