File tree Expand file tree Collapse file tree 1 file changed +50
-0
lines changed
Expand file tree Collapse file tree 1 file changed +50
-0
lines changed Original file line number Diff line number Diff line change 1+ ``` java
2+ import java.io.* ;
3+ import java.util.* ;
4+
5+ public class Main {
6+ static int N , C ;
7+ static int [] house;
8+
9+ public static void main (String [] args ) throws Exception {
10+ BufferedReader br = new BufferedReader (new InputStreamReader (System . in));
11+ StringTokenizer st = new StringTokenizer (br. readLine());
12+ N = Integer . parseInt(st. nextToken());
13+ C = Integer . parseInt(st. nextToken());
14+
15+ house = new int [N ];
16+ for (int i = 0 ; i < N ; i++ ) house[i] = Integer . parseInt(br. readLine());
17+ Arrays . sort(house);
18+
19+ int lo = 1 ; // 최소 간격
20+ int hi = house[N - 1 ] - house[0 ]; // 최대 간격
21+ int ans = 0 ;
22+
23+ while (lo <= hi) {
24+ int mid = lo + (hi - lo) / 2 ;
25+ if (canPlace(mid)) { // mid 간격으로 C개 설치 가능
26+ ans = mid;
27+ lo = mid + 1 ;
28+ } else {
29+ hi = mid - 1 ;
30+ }
31+ }
32+
33+ System . out. println(ans);
34+ }
35+
36+ // dist 간격을 유지하며 C개 설치 가능한지
37+ static boolean canPlace (int dist ) {
38+ int count = 1 ; // 첫 집에 설치
39+ int last = house[0 ];
40+ for (int i = 1 ; i < N ; i++ ) {
41+ if (house[i] - last >= dist) {
42+ count++ ;
43+ last = house[i];
44+ if (count >= C ) return true ;
45+ }
46+ }
47+ return false ;
48+ }
49+ }
50+ ```
You can’t perform that action at this time.
0 commit comments