문제 출처
https://www.acmicpc.net/problem/1654
접근 방식 및 풀이
- 1~k 배열의 가장 큰 값의 중간값으로 가장 큰 랜선의 길이를 찾아간다.
- 코드는 아래 블로그에서 참고했다.
https://ukyonge.tistory.com/25
소스 코드
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int k = sc.nextInt();
int n = sc.nextInt();
long[] arr = new long[k];
long max = 0;
for (int i = 0; i <k ; i++) {
arr[i] = sc.nextLong();
max = Math.max(max, arr[i]);
}
long start =1;
long end =max;
while (start<=end){
long count =0;
long mid = (start+end)/2;
for (int i = 0; i <k ; i++) {
count += arr[i]/mid;
}
if(count < n){
end=mid-1;
}else{
start=mid+1;
}
}
System.out.println(end);
}
}
결과
'Competition > Baekjoon' 카테고리의 다른 글
[백준] 2146번 다리만들기 (0) | 2020.03.25 |
---|---|
[백준] 10451번 순열사이클 (0) | 2020.03.24 |
[백준] 2261번 자바 (0) | 2020.03.23 |