https://www.acmicpc.net/problem/28353
코드
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
#define FASTIO ios::sync_with_stdio(false); cin.tie(NULL);
int main() {
FASTIO;
int n, k, ans=0;
cin >> n >> k;
vector<int> v(n);
for (int i = 0; i < n; i++) cin >> v[i];
sort(v.begin(), v.end());
int s = 0, e = n - 1;
while (s < e) {
if (v[s] + v[e] <= k) {
ans++;
s++;
}
e--;
}
cout << ans;
return 0;
}
설명
고양이의 무게들을 오름차순 정렬해줍니다. 이후 투포인터를 이용해서 두 고양이의 무게 합을 구합니다.
s = 0, e = n-1로 시작해서 w[s] + w[e] <= k 라면 한 명이 행복해질 수 있으니 ans ++ 하고, s++, e--해서 다음 고양이들로 넘어갑니다. w[s] + w[e] > k라면 w[e]인 고양이를 버틸 방법이 없으므로 e--만 하면 됩니다.
s < e 일 때까지 반복 후 ans를 출력합니다.
느낀 점
투포인터를 이용해서 금방 풀었습니다.
'PS (C, C++)' 카테고리의 다른 글
[백준/C++] 16397 탈출 (0) | 2024.12.01 |
---|---|
[백준/C++] 14395 4연산 (0) | 2024.11.25 |
[백준/C++] 17609 회문 (0) | 2024.11.21 |
[백준/C++] 22352 항체 인식 (0) | 2024.11.20 |
[백준/C++] 9205 맥주 마시면서 걸어가기 (1) | 2024.11.18 |