1806 - 부분합

2025. 2. 23. 23:57PS/백준

문제

https://www.acmicpc.net/problem/1806

느낀점

응용 투포인터 문제, 조건 비교에서 등호를 넣으니 풀렸고 안 넣으니 풀리지 않았는데, 그 엣지케이스를 정확하게 모르겠음.. 어쨌든 등호도 신경 써야할 것이다~~

풀이

#include <iostream>
#include <vector>

using namespace std;

int main()
{
    int N, S;
    cin >> N >> S;
    vector<int> arr(N);
    for (int i = 0; i < N; i++)
    {
        cin >> arr[i];
        if (arr[i] == S)
        {
            cout << 1;
            return 0;
        }
    }
    int left = 0, right = 1;
    int minLength = 10e4;
    int sum = arr[left] + arr[right];
    while (left <= right)
    {
        if (left >= N || right >= N)
        {
            break;
        }

        if (sum < S)
        {
            sum += arr[++right];
        }
        else
        {
            minLength = min(minLength, right - left + 1);
            sum -= arr[left++];
        }
    }
    if (minLength == 10e4)
    {
        cout << 0;
    }
    else
    {
        cout << minLength;
    }

    return 0;
}

'PS > 백준' 카테고리의 다른 글

3151 - 합이 0  (0) 2025.02.25
24523 - 내 뒤에 나와 다른 수  (0) 2025.02.24
1253 - 좋다  (0) 2025.02.22
18114 - 블랙 프라이데이  (0) 2025.02.19
17609 - 회문  (0) 2025.02.18