풀이
- 뭔가 문제를 제대로 이해하지 못했어서 시간이 좀 더 걸린 문제로
- 문제 해결 방법은 정말 단순하게 이분 탐색 문제인데
- 왠지 모르게 지난 풀이 방법으론 해결 방법에 대한 뎁스가 한 개 더 있는 듯한 느낌이었어서
- 더 꼬이게 되어버림...
- 그리고 이분 탐색의 결과 도출에 대한 것으로 하나 상기된 것은
- 결과가 나왔을 경우 계속해서 탐색할 때
- 같을 경우와 부족할 경우를 함께 묶어 처리를 하는 것을 다시 상기하게 되었음.
import java.io.*;
import java.util.*;
public class _2110 {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int[] li = Arrays.stream(br.readLine().split(" ")).mapToInt(Integer::parseInt).toArray();
int n = li[0];
int c = li[1];
// 집 위치 체크
int[] check = new int[n];
for (int i=0; i<n; i++) check[i] = Integer.parseInt(br.readLine());
Arrays.sort(check);
// 이분 탐색 시작
System.out.println(B_Search(check, c));
}
public static int B_Search(int[] check, int c) {
// 이분 탐색 시작
int s = 0;
int e = check[check.length-1]-check[0];
int mx_range = 0;
while (s<=e) {
int m = (s+e)/2;
int cnt = 1;
int now = check[0];
for (int i=1; i<check.length; i++) {
if (check[i]-now >= m) {
cnt++;
now = check[i];
}
}
if (cnt >= c) {
mx_range = Math.max(mx_range, m);
s = m+1;
}
else e = m-1;
}
return mx_range;
}
}
'알고리즘' 카테고리의 다른 글
[백준, 자바, 10988번] 팰린드롬인지 확인하기 (0) | 2024.08.27 |
---|---|
[백준, 자바, 2512번] 예산(이분 탐색) (0) | 2024.08.24 |
[백준, 자바, 10989번] 수 정렬하기 3 - 도수 정렬(Counting Sort) (0) | 2024.08.03 |
[프로그래머스] 코딩 기초 트레이닝 (각 문제 별 답) -1 (2) | 2024.06.18 |
[백준, 파이썬, 2890번] 카약 (0) | 2024.05.28 |