14246 - K보다 큰 구간

2025. 2. 14. 15:09PS/백준

문제

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;
}

 

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

22857 - 가장 긴 짝수 연속한 부분 수열 (small)  (0) 2025.02.14
2003 - 수들의 합  (0) 2025.02.14
28353 - 고양이 카페  (2) 2025.02.13
10025 - 게으른 백곰  (0) 2025.02.13
30804 - 과일 탕후루  (0) 2025.02.13