알고리즘/Class 2
백준 BOJ 2805번 - 나무 자르기
edvedv
2022. 8. 30. 23:30
접근 방법
이전에 풀었던 1654번 랜선 자르기와 유사한 문제다.
https://edvedv.tistory.com/14?category=1038363
백준 BOJ 1654번
접근 방법 생각없이 0번부터 탐색하는 burte force 방식으로 구현하면 어김없이 시간초과를 맛 볼 것이다. 이분 탐색으로 풀어야 하는 문제다. 이분 탐색( Binary Search ) 이분 탐색 알고리즘은 정렬되
edvedv.tistory.com
코드
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int n = in.nextInt();
int m = in.nextInt();
int lo = 0;
int hi = 0;
int arr[] = new int[n];
for(int i = 0; i < n; i++){
arr[i] = in.nextInt();
if(hi < arr[i]) hi = arr[i];
}
while(lo < hi) {
int mid = (lo + hi)/2;
long sum = 0;
for(int h : arr) {
if(h - mid > 0) sum += h-mid;
}
if(sum < m) hi = mid;
else lo = mid + 1;
}
System.out.println(lo - 1);
}
}