
내풀이>
import java.util.*; public class Main { public int count(int[] arr, int capacity) { int cnt = 1; int idx = 0; for (int i = 0; i < arr.length; i++) { if (arr[i] - arr[idx] >= capacity) { cnt++; idx = i; } } return cnt; } public int solution(int n, int c, int[] arr) { int answer = 0; Arrays.sort(arr); int rt = arr[n - 1]; //9 int lt = Arrays.stream(arr).max().getAsInt(); //1 for (int i = 0; i < n-1; i++) { lt = Math.min(arr[i+1]-arr[i], lt); } while (lt <= rt) { int mid = (rt+lt)/2; //5 if (count(arr, mid) < c) { //mid 거리로 둘수 있는 말의 수 rt = mid-1; }else{ answer = mid; lt = mid+1; } } return answer; } public static void main(String[] args) { Main T = new Main(); Scanner kb = new Scanner(System.in); int n = kb.nextInt(); int c = kb.nextInt(); int[] arr = new int[n]; for (int i = 0; i < n; i++) { arr[i] = kb.nextInt(); } System.out.println(T.solution(n, c, arr)); } }