백준 알고리즘(C++)

백준 16200번 해커톤(C++)

coding232624 2023. 12. 17. 22:42

문제

https://www.acmicpc.net/problem/16200

 

16200번: 해커톤

예를 들어, 5명의 학생이 있고, X1 = 1, X2 = 2, X3 = 5, X4 = 2, X5 = 1인 경우에 팀의 수의 최솟값은 4이다. {1}, {2}, {3}, {4}, {5}로 5개의 팀을 만드는 방법이 있지만, 이것은 팀의 수가 최소가 아니다. {1}, {3}

www.acmicpc.net

 

코드

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
#include<bits/stdc++.h>
using namespace std;
 
int N,ret,cnt;
int tmp = 100000;
int N_list[100004= {100001};
 
int main(){
    ios_base::sync_with_stdio(false); 
    cin.tie(NULL);cout.tie(NULL);
    
    //N 입력받기 
    cin >> N;
    
    //N_list 입력받기
    for(int i = 0; i < N; i++){
        int a;
        cin >> a;
        N_list[i] = a;
    }
    
    //N_list 정렬하기
    sort(N_list,N_list+N);
    
    //반복문 돌면서 팀의 수 구하기
     tmp = N_list[0];
     for (int i = 0; i < N; i++)
     {
         cnt ++;
         if (cnt == tmp){
             ret ++;
             cnt = 0;
             tmp = N_list[i+1];
         }
    }
    
    //마지막 그룹이 카운트되지 않은 예외 처리 
    if (cnt != 0) ret ++;
    
    cout << ret;
    return 0;
}
 
cs