28353 - 고양이 카페

2025. 2. 13. 21:27PS/백준

문제

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

느낀점

투포인터는 크게 두 가지 유형이 있다. 첫 번째는 정렬한 후, 양 끝에서 좁혀가는 문제이고 두 번째는 같은 포인터에서 시작해서 조건에 맞는 경우 하나씩 왼쪽 포인터에서 제외시켜주는 경우이다. 두 번째 유형인줄 알고 풀다가 첫 번째 유형이라는 것을 깨달았다... 문제를 잘 읽고 어떻게 풀지를 잘 선택하자.

풀이

#include <iostream>
#include <vector>
#include <algorithm>

using namespace std;

int main()
{
    int N, K;
    cin >> N >> K;
    vector<int> cats(N);
    for (int i = 0; i < N; i++)
    {
        int temp;
        cin >> temp;
        cats[i] = temp;
    }
    sort(cats.begin(), cats.end());
    int cnt = 0, left = 0, right = N - 1;
    while (left < right)
    {
        if (cats[left] + cats[right] > K)
        {
            right--;
        }
        else
        {
            cnt++;
            right--;
            left++;
        }
    }

    cout << cnt;

    return 0;
}

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

2003 - 수들의 합  (0) 2025.02.14
14246 - K보다 큰 구간  (0) 2025.02.14
10025 - 게으른 백곰  (0) 2025.02.13
30804 - 과일 탕후루  (0) 2025.02.13
랭킹전 대기열 - 20006  (0) 2025.02.13