PS/백준
28353 - 고양이 카페
Mingi Kim
2025. 2. 13. 21:27
문제
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;
}