코딩테스트/백준
백준 1654 : 랜선 자르기 _자바 Java
플래시🦥
2023. 1. 25. 11:31
반응형
https://www.acmicpc.net/problem/1654
1654번: 랜선 자르기
첫째 줄에는 오영식이 이미 가지고 있는 랜선의 개수 K, 그리고 필요한 랜선의 개수 N이 입력된다. K는 1이상 10,000이하의 정수이고, N은 1이상 1,000,000이하의 정수이다. 그리고 항상 K ≦ N 이다. 그
www.acmicpc.net
import java.io.*;
import java.util.*;
public class Main {
static int wire[];
static int K,N;
public static void main(String[] args) throws IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String[] str= br.readLine().split(" ");
K =Integer.parseInt(str[0]); //이미 가진 랜선
N =Integer.parseInt(str[1]); //필요한 랜선 개수
wire = new int[K];
long max=Integer.MIN_VALUE;
for(int i=0;i<K;i++) {
wire[i]=Integer.parseInt(br.readLine());
if(max<wire[i])
max=wire[i];
}
long start=1,end=max+1;
long mid=0;
while(start<=end) {
mid = (start+end)/2;
int cnt=0;
for(int i=0;i<K;i++) {
cnt+=wire[i]/mid;
}
if(cnt>=N) //자른 개수가 필요한 개수보다 크거나 같으면
start=mid+1; //랜선을 더 크게 잘라줘
else //자른 개수가 필요한 개수보다 작으면
end=mid-1; //랜선을 더 작게 잘라줘
}
System.out.println(end);
br.close();
}// main()
}// class Main
728x90
반응형