일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- HashSet
- StringTokenizer
- 코틀린기초
- 백준 3190번
- 프로그래머스 자바
- 백준 2473번 세 용액 - java
- 프로그래머스 java
- 백준 1043번 거짓말 - java 분리 집합
- 백준 14938번 서강그라운드
- 최소 힙 1927
- map
- 백준 1806번 부분합 java
- replace()
- Stack
- 백준 1647번 도시 분할 계획 - java
- 프로그래머스
- kotlin
- mysql hy000 에러
- HashMap
- 백준 1541
- 백준 1197번 최소 스패닝 트리 - java
- 백준 2467번 용액 자바 - 이분탐색
- append
- toUpperCase
- ac 5430번
- StringBuilder
- 18111번 마인크래프트 - java 구현
- dp
- Java
- hash
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