PS (C, C++)

[백준/C++] 28353 고양이 카페

최연재 2024. 11. 30. 20:20

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