1. 유형
이분탐색
2. 풀이
문제를 파악하고 이분탐색을 생각할 수 있어야하는 문제였습니다.
구현 난이도는 기본적인 이분탐색만 할 수 있으면 가능한 문제였습니다.
1. 왼쪽 오른쪽 값 초기화
2. 이분탐색 진행
3. 코드
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 N = stoi(st.nextToken());
int M = stoi(st.nextToken());
int arr[] = new int[M];
for(int i=0; i<M; i++) {
st = new StringTokenizer(br.readLine());
arr[i] = stoi(st.nextToken());
}
int l=1;
int r=1000000000;
int answer = 1000000000;
while(l<=r) {
int m = (l+r)/2;
int res = binary(arr, m);
if(res <= N) {
r=m-1;
answer = Math.min(m, answer);
}else if(res > N){
l= m+1;
}
}
System.out.println(answer);
}
static int binary(int arr[], int m) {
int res = 0;
for (int i = 0; i < arr.length; i++) {
int mok = arr[i] / m;
if (arr[i] % m == 0) {
res += mok;
} else {
res += (mok + 1);
}
}
return res;
}
static int stoi(String s) {
return Integer.valueOf(s);
}
}
'알고리즘 > 백준' 카테고리의 다른 글
[백준 9996] 한국이 그리울 땐 서버에 접속하지 (0) | 2022.03.03 |
---|---|
백준 16439 - 치킨치킨치킨 (0) | 2021.11.10 |
백준 15970 - 화살표 그리기 (0) | 2021.11.07 |
백준 16987 - 계란으로 계란치기 (0) | 2021.11.03 |
백준 16953 - A -> B (0) | 2021.11.02 |