-
[백준]1477: 휴게소 세우기(java)Algorithm/백준 2022. 6. 1. 18:02728x90
https://www.acmicpc.net/problem/1477
문제
다솜이는 유료 고속도로를 가지고 있다. 다솜이는 현재 고속도로에 휴게소를 N개 가지고 있는데, 휴게소의 위치는 고속도로의 시작으로부터 얼만큼 떨어져 있는지로 주어진다. 다솜이는 지금 휴게소를 M개 더 세우려고 한다.
다솜이는 이미 휴게소가 있는 곳에 휴게소를 또 세울 수 없고, 고속도로의 끝에도 휴게소를 세울 수 없다. 휴게소는 정수 위치에만 세울 수 있다.
다솜이는 이 고속도로를 이용할 때, 모든 휴게소를 방문한다. 다솜이는 휴게소를 M개 더 지어서 휴게소가 없는 구간의 길이의 최댓값을 최소로 하려고 한다. (반드시 M개를 모두 지어야 한다.)
예를 들어, 고속도로의 길이가 1000이고, 현재 휴게소가 {200, 701, 800}에 있고, 휴게소를 1개 더 세우려고 한다고 해보자.
일단, 지금 이 고속도로를 타고 달릴 때, 휴게소가 없는 구간의 최댓값은 200~701구간인 501이다. 하지만, 새로운 휴게소를 451구간에 짓게 되면, 최대가 251이 되어서 최소가 된다.
입력
첫째 줄에 현재 휴게소의 개수 N, 더 지으려고 하는 휴게소의 개수 M, 고속도로의 길이 L이 주어진다. 둘째 줄에 현재 휴게소의 위치가 공백을 사이에 두고 주어진다.
출력
첫째 줄에 M개의 휴게소를 짓고 난 후에 휴게소가 없는 구간의 최댓값의 최솟값을 출력한다.
제한
- 0 ≤ N ≤ 50
- 1 ≤ M ≤ 100
- 100 ≤ L ≤ 1,000
- 1 ≤ 휴게소의 위치 ≤ L-1
- N+M < L
- 모든 휴게소의 위치는 중복되지 않음
- 입력으로 주어지는 모든 수는 정수
예제 입력 1
6 7 800 622 411 201 555 755 82
예제 출력 1
70
풀이
전체 코드
package 백준; import java.io.BufferedReader; import java.io.InputStreamReader; import java.util.Arrays; import java.util.Collections; import java.util.StringTokenizer; public class BJ_G4_1477_휴게소 { public static void main(String[] args) throws Exception{ BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); StringTokenizer st = new StringTokenizer(br.readLine()); int N = Integer.parseInt(st.nextToken()); int M = Integer.parseInt(st.nextToken()); int L = Integer.parseInt(st.nextToken()); st = new StringTokenizer(br.readLine()); int[]arr = new int[N+2]; arr[0] = 0; for(int i=1; i<=N; i++) { arr[i] = Integer.parseInt(st.nextToken()); } arr[N+1] = L; Arrays.sort(arr); int left = 1; int right = L-1; while(left <= right) { int mid = (left + right) / 2; int sum = 0; for(int i=1; i<arr.length; i++) { sum+=(arr[i] - arr[i-1] - 1) / mid; } if(sum > M) { left = mid+1; } else { right = mid-1; } } System.out.println(left); } }
728x90'Algorithm > 백준' 카테고리의 다른 글
[백준]13265: 색칠하기(java) (0) 2022.06.05 [백준]19542: 전단지 돌리기(java) (0) 2022.06.04 [백준]1826: 연료 채우기(java) (0) 2022.05.31 [백준]2026: 소풍(java) (0) 2022.05.30 [백준]8972: 미친 아두이노(java) (0) 2022.05.19