https://www.acmicpc.net/problem/1654
1654번: 랜선 자르기
첫째 줄에는 오영식이 이미 가지고 있는 랜선의 개수 K, 그리고 필요한 랜선의 개수 N이 입력된다. K는 1이상 10,000이하의 정수이고, N은 1이상 1,000,000이하의 정수이다. 그리고 항상 K ≦ N 이다. 그
www.acmicpc.net
문제
풀이
전형적인 이분탐색 문제이다. right left를 정해놓고 진행할때마다 점점 중간값으로 탐색하는 방식으로 하면된다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
|
import java.util.*;
import java.io.*;
public class Main{
static int K,N;
static long[] arr;
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String[] input = br.readLine().split(" ");
K = Integer.parseInt(input[0]); N = Integer.parseInt(input[1]);
long max=0;
arr = new long[K];
for(int i=0;i<K;i++) {
arr[i] = Long.parseLong(br.readLine());
max = Math.max(arr[i],max);
}
long left = 1;
long right = max;
while(left<=right){
long mid = (right+left)/2;
long sum = 0;
for(int i=0;i<K;i++){
sum += arr[i]/mid;
}
if(sum >= N)
left = mid+1;
else
right = mid-1;
}
System.out.println(right);
}
}
|
cs |
'알고리즘,PS > 백준' 카테고리의 다른 글
[BOJ] 백준 [1806] 부분합 JAVA (0) | 2021.09.08 |
---|---|
[BOJ] 백준 [3273] 두 수의 합 JAVA (0) | 2021.09.08 |
[BOJ] 백준 [10816] 숫자카드2 JAVA (0) | 2021.09.06 |
[BOJ] 백준 [1920] 수찾기 JAVA (0) | 2021.09.06 |
[BOJ] 백준 [1162] 도로포장 JAVA (0) | 2021.09.02 |