코딩테스트/백준

백준 1654 : 랜선 자르기 _자바 Java

플래시🦥 2023. 1. 25.
반응형

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
반응형

댓글