반응형
    
    
    
  -문제

-코드
#include<stdio.h>
#include<algorithm>
#include<vector>
using namespace std;
vector<int> a;
int calcul(int n)
{
	int cnt = 1;
	int pos = a[0];
	
	for (int i = 1; i < a.size(); i++)
	{
		if (a[i] - pos >= n)
		{
			cnt++;
			pos = a[i];
		}
	}
	return cnt;
}
int main()
{
	int n, m, tmp, res = 0;
	scanf("%d %d", &n, &m);
	for (int i = 0; i < n; i++)
	{
		scanf("%d", &tmp);
		a.push_back(tmp);
	}
	
	sort(a.begin(), a.end());
	int rt = a[n-1], lt = 1, mid;
	while (lt <= rt)
	{
		mid = (rt + lt) / 2;
		if (calcul(mid) >= m)
		{
			lt = mid + 1;
			res = mid;
		}
		else
		{
			rt = mid - 1;
		}
	}
	printf("%d", res);
	return 0;
}반응형
    
    
    
  '이론 > 코딩테스트' 카테고리의 다른 글
| [백준] 3184번 양 (BFS) (0) | 2022.08.26 | 
|---|---|
| [백준] 1388번 바닥 장식 (BFS) (0) | 2022.08.26 | 
| [백준] 16401번 과자 나눠주기 (이분 탐색) (0) | 2022.08.25 | 
| [백준] 2512번 예산 (이분 탐색) (0) | 2022.08.25 | 
| [백준] 10816번 숫자카드2 (이분 탐색) (0) | 2022.08.25 | 
 
                    
                   
                    
                   
                    
                  