모험가 길드

김보현·2022년 2월 13일
0

문제

공포도가 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;
}
profile
📈어제보다 조금 더 성장하는 오늘을 위해

0개의 댓글