25916 - 싫은데요

2025. 2. 17. 12:45PS/백준

문제

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

느낀점

풀이는 기본적인 투포인터 문제이지만, 문제의 조건을 잘 읽고 엣지 케이스를 대비해야한다는 것을 다시 한 번 깨달음

풀이

#include <iostream>
#include <vector>

using namespace std;

int main()
{
    int N;
    long long M;
    cin >> N >> M;
    vector<int> numList(N);
    for (int i = 0; i < N; i++)
    {
        cin >> numList[i];
    }
    int left = 0;
    long long volumeCount = 0, maxVolume = 0;
    for (int right = 0; right < N; right++)
    {
        volumeCount += numList[right];
        if (volumeCount > M)
        {
            while (true)
            {
                volumeCount -= numList[left++];
                if (left >= N)
                {
                    break;
                }

                if (volumeCount <= M)
                {
                    maxVolume = max(maxVolume, volumeCount);
                    break;
                }
            }
        }
        else
        {
            maxVolume = max(maxVolume, volumeCount);
        }
    }
    cout << min(M, maxVolume);

    return 0;
}

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

2118 - 두 개의 탑  (0) 2025.02.17
1484 - 다이어트  (0) 2025.02.17
20922 - 겹치는 건 싫어  (0) 2025.02.17
15565 - 귀여운 라이언  (0) 2025.02.17
2531 - 회전 초밥  (0) 2025.02.15