본문 바로가기
이론/코딩테스트

[백준] 16401번 과자 나눠주기 (이분 탐색)

by 퇴근후개발 2022. 8. 25.
반응형

-문제

 

 

-코드

#include<stdio.h>
#include<vector>
using namespace std;

vector<int> a;

int calcul(int n)
{
	int cnt = 0;
	for (int i = 0; i < a.size(); i++)
	{
		cnt += a[i] / n;
	}
	return cnt;
}

int main() 
{
	int n, m, tmp, res=0, max = 0;
	scanf("%d %d", &n, &m);
	
	for (int i = 0; i < m; i++)
	{
		scanf("%d", &tmp);
		a.push_back(tmp);
		if (max < a[i]) max = a[i];
	}

	int rt=max, lt=1, mid;
	
	while (lt<=rt)
	{
		mid = (rt + lt) / 2;
		if (calcul(mid) >= n)
		{
			lt = mid + 1;
			res = mid;
		}
		else
		{
			rt = mid - 1;
		}
	}

	printf("%d", res);
	return 0;
}
반응형