PS/백준

14246 - K보다 큰 구간

Mingi Kim 2025. 2. 14. 15:09

문제

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

느낀점

로직 자체는 간단했는데 이래저래 뻘짓을 많이 한 거 같다.. 투포인터는 등호에 따라서 결과가 많이 바뀌기 때문에 잘 신경써줘야할 듯.. 그리고 이 문제는 타입으로 장난쳤는데, 그 부분은 별로였다..

풀이

#include <iostream>
#include <vector>

using namespace std;

int main()
{
    int n;
    cin >> n;
    vector<int> numList(n + 1, 0);
    for (int i = 0; i < n; i++)
    {
        int temp;
        cin >> temp;
        numList[i] = temp;
    }
    long long k;
    cin >> k;
    int start = 0, end = 0;
    long long sum = 0, cnt = 0;
    while (true)
    {
        if (sum <= k)
        {
            sum += numList[end++];
            if (end > n)
            {
                break;
            }
        }
        else
        {

            cnt += n - end + 1;
            sum -= numList[start++];
            if (start > n)
            {
                break;
            }
        }
    }

    cout << cnt;

    return 0;
}