공포도가 X인 모험가는 반드시 X명 이상으로 구성한 모험가 그룹에 참여해야함
몇 명의 모험가는 마을에 그대로 남아 있어도 가능
예)
N = 5
2 3 1 2 2그룹 1 - 1, 2, 3
그룹 2 - 2, 2
결과 - 2
모험가의 수 N (1<=N<=100,000)
여행을 떠날 수 있는 그룹 수의 최댓값
오름차순으로 정렬하여 그룹 내에 포함된 인원이 공포심과 같아지는 경우 그룹 수 증가
#include<iostream>
#include<algorithm>
#include<vector>
using namespace std;
int main() {
int N, scare;
cin >> N;
vector<int> v;
for (int i = 0; i < N; i++) {
cin >> scare;
v.push_back(scare);
}
sort(v.begin(), v.end()); //오름차순 정렬
int group = 0;
int count = 0;
for (int i = 0; i < v.size(); i++) {
count++;
if (count == v[i]) { //공포심x와 그룹인원이 같은 경우
group++;
count = 0;
}
}
cout << group << "\n";
return 0;
}