https://www.acmicpc.net/problem/1654
1654번: 랜선 자르기
첫째 줄에는 오영식이 이미 가지고 있는 랜선의 개수 K, 그리고 필요한 랜선의 개수 N이 입력된다. K는 1이상 10,000이하의 정수이고, N은 1이상 1,000,000이하의 정수이다. 그리고 항상 K ≦ N 이다. 그
www.acmicpc.net
해석 및 팁
이 문제는 이분 탐색을 사용하는 문제입니다. 다만 주의할 점은 시작할 때 left 값을 0을 주면 mid값이 0이나 오면서 / by zero 오류가 발생합니다. 따라서 랜선의길이는 자연수이므로 최소 1로 시작하여야 합니다.
Java 코드
import java.util.Scanner;
import java.util.Arrays;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int k = sc.nextInt();
int n = sc.nextInt();
int[] arr = new int[k];
for(int i = 0; i < k; i++) arr[i] = sc.nextInt();
Arrays.sort(arr);
long l = 1;
long r = arr[k - 1];
while(l <= r) {
long sum = 0;
long mid = (l + r) / 2;
for(int i = 0; i < k; i++) sum += (arr[i] / mid);
if(sum < n) r = mid - 1;
else l = mid + 1;
}
System.out.println(r);
}
}
'백준' 카테고리의 다른 글
백준 11279 최대 힙(Java) (0) | 2023.02.07 |
---|---|
백준 14889 스타트와 링크(Java) (0) | 2023.02.07 |
백준 9020 골드바흐의 추측(Java) (0) | 2023.02.06 |
백준 1541 잃어버린 괄호(Java) (0) | 2023.02.06 |
백준 2805 나무 자르기(Java) (0) | 2023.02.06 |