[백준] 13702 이상한 술집 - Java
매개 변수 탐색을 활용해 풀 수 있는 문제이다.
0으로 나눠지는 경우 / int가 아니라 long으로 설정해야 함
위 두 가지만 신경쓰면 쉽게 해결할 수 있다.
import java.util.*;
import java.io.*;
public class Main {
static int N;
static int K;
static int max = Integer.MIN_VALUE;
static int[] liter;
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
N = Integer.parseInt(st.nextToken());
K = Integer.parseInt(st.nextToken());
liter = new int[N+1];
for(int i=1; i<N+1; i++){
liter[i] = Integer.parseInt(br.readLine());
if(max < liter[i]){
max = liter[i];
}
}
BinarySearch();
}
static boolean check(long l){
long cnt = 0;
for(int i=1; i<N+1; i++){
cnt = cnt + liter[i] / l;
}
return cnt >= K;
}
static void BinarySearch(){
long L = 1;
long R = max;
long ans = 0;
while(L <= R){
long mid = (L+R) / 2;
if(check(mid)){
ans = mid;
L = mid + 1;
}else{
R = mid - 1;
}
}
System.out.println(ans);
}
}
반응형
'Algorithm > Baekjoon' 카테고리의 다른 글
[백준] 2866 문자열 잘라내기 - Java (0) | 2022.05.06 |
---|---|
[백준] 1637 날카로운 눈 - Java (0) | 2022.05.06 |
[백준] 2343 기타 레슨- Java (0) | 2022.05.05 |
[백준] 2512 예산 - Java (0) | 2022.05.05 |
[백준] 1654 랜선 자르기 - Java (0) | 2022.05.05 |
댓글
이 글 공유하기
다른 글
-
[백준] 2866 문자열 잘라내기 - Java
[백준] 2866 문자열 잘라내기 - Java
2022.05.06 -
[백준] 1637 날카로운 눈 - Java
[백준] 1637 날카로운 눈 - Java
2022.05.06 -
[백준] 2343 기타 레슨- Java
[백준] 2343 기타 레슨- Java
2022.05.05 -
[백준] 2512 예산 - Java
[백준] 2512 예산 - Java
2022.05.05