일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | |
7 | 8 | 9 | 10 | 11 | 12 | 13 |
14 | 15 | 16 | 17 | 18 | 19 | 20 |
21 | 22 | 23 | 24 | 25 | 26 | 27 |
28 | 29 | 30 | 31 |
Tags
- 백준 2206번 벽 부수고 이동하기 G3
- toUpperCase
- replace()
- 스프링 다중프로필
- 전위 중위 후위
- 백준 2660번 회장뽑기 G5
- 스프링 on-profile
- HashSet
- 백준 1240번 노드사이의 거리
- kotlin
- 코틀린기초
- HashMap
- 백준 1600번 말이 되고픈 원숭이
- StringBuilder
- 프로그래머스 자바
- 프로그래머스 java
- 백준 2589번 보물섬 G5
- map
- 백준 11725번 트리의 부모 찾기
- hash
- append
- Java
- dp
- 포인트 컷
- StringTokenizer
- 프로그래머스
- Stack
- 백준 1967번 트리의 지름 G4 자바
- 서브모듈 yml
- 백준 8979번 올림픽 S5 자바
Archives
- Today
- Total
말하는 컴공감자의 텃밭
백준 2110번 공유기 설치 G4 - 이분탐색 본문
728x90
공유기를 설치하는 개수는 정해져 있고, 집 사이의 거리를 최대로 하고 싶은 도현이다.
처음에는 뭘.. 탐색해야 하나 어지러웠다 처음과 끝쪽에 배치하는게 가장 멀지 않나..?
이런 생각만 갖고 있다가. 기준을 1번으로 잡고, 이후부터 거리를 늘려나가며
주어진 개수를 채운다면 거리를 더 벌리자! 못 채웠다면 이전 거리가 최대 거리일 것이다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 | import java.io.*; import java.util.*; public class Main { // Boj_2110_공유기 설치 public static int N, C; // 집, 공유기 개수 public static int[] arr; public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); StringTokenizer st; st = new StringTokenizer(br.readLine()); N = Integer.parseInt(st.nextToken()); C = Integer.parseInt(st.nextToken()); arr = new int[N]; for (int i = 0; i < N; i++) { arr[i] = Integer.parseInt(br.readLine()); } Arrays.sort(arr); // 최소 거리를 기준으로 늘려가면? // 개수가 C를 만족하면서 가장 크면 정답. int low = 1; int high = arr[arr.length - 1]; while (low <= high) { int mid = (low + high) / 2; int now = 0; // 무조건 0은 포함 int cnt = 1; for (int i = 0; i < N; i++) { if (arr[i] - arr[now] >= mid) { cnt ++; now = i; } } // cnt 가 C보다 같거나 크다면 왼쪽 땡기기 // 만족하기 직전까지 찾음 if( cnt >= C){ low = mid +1; }else{ high = mid -1; } } System.out.println(low - 1); } } | cs |
이분탐색... 이분탐색....이분탐색...........
728x90
'알고리즘 > Backjoon - Java' 카테고리의 다른 글
백준 20408번 춘배가 선물하는 특별한 하트 G5 - Hash (0) | 2024.03.28 |
---|---|
백준 22252번 정보 상인 호석 G5 - Java, Hash, 우선순위 큐 (0) | 2024.03.26 |
백준 16928번 뱀과 사다리 게임 G5 - java 이분탐색 (0) | 2024.03.18 |
백준 2792번 보석상자 S1 - java 이분 탐색 (0) | 2024.03.18 |
백준 2156번 포도주 시식 S1 - DP (0) | 2024.03.18 |
Comments