백준/탐색
99클럽 코테 스터디 11일차 TIL - 백준 16401번 : 과자 나눠주기
킴준현
2025. 4. 15. 01:03
✅ 문제
https://www.acmicpc.net/problem/16401
✅ 분류
이분탐색
✅ 공부한 내용
✅ 풀이
import java.io.*;
import java.util.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st=new StringTokenizer(br.readLine());
int M=Integer.parseInt(st.nextToken());
int N=Integer.parseInt(st.nextToken());
int[] snack=new int[N];
st=new StringTokenizer(br.readLine());
for(int i=0;i<N;i++){
snack[i]=Integer.parseInt(st.nextToken());
}
Arrays.sort(snack);
int left=1;
int right=snack[N-1];
while(left<=right){
int mid=(left+right)/2;
int cnt=0;
for(int i=0;i<N;i++){
if(snack[i]>=mid){
cnt+=snack[i]/mid;
}
}
// 조카의 수보다 많은 과자를 나누어 줄 수 있다면 과자의 길이를 키울 수 있음
if(cnt>=M){
left=mid+1;
}
else{
right=mid-1;
}
}
System.out.println(right);
}
}