본문 바로가기
알고리즘 & 자료구조/백준

백준 2110

by 신재권 2022. 9. 11.
package baekjoon.이분탐색;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.StringTokenizer;

class Main2110 {

	static int N, C;
	static int[] A;

	private static boolean determination(int D) {
		int cnt = 1, last = A[1];
		for (int i = 2; i <= N; i++) {
			if (A[i] - last >= D) {
				cnt++;
				last = A[i];
			}
		}
		return cnt >= C;
	}

	private static void go() {
		int L = 1, R = 1_000_000_000, ans = 0;
		while (L <= R) {
			int mid = (L + R) / 2;
			if (determination(mid)) {
				ans = mid;
				L = mid + 1;
			} else {
				R = mid - 1;
			}
		}
		System.out.println(ans);
	}

	public static void main(String[] args) throws Exception {
		input();
		go();
	}

	private static void input() throws IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		StringTokenizer st = new StringTokenizer(br.readLine());
		N = Integer.parseInt(st.nextToken());
		C = Integer.parseInt(st.nextToken());
		A = new int[N + 1];
		for (int i = 1; i <= N; i++) {
			A[i] = Integer.parseInt(br.readLine());
		}
		Arrays.sort(A);
	}
}

'알고리즘 & 자료구조 > 백준' 카테고리의 다른 글

백준 2470 V2  (0) 2022.09.12
백준 1806  (0) 2022.09.12
백준 2805  (0) 2022.09.11
백준 10816  (0) 2022.09.09
백준 3273  (0) 2022.09.09