CS/Algorithm
[JAVA / 백준 : 2805] 나무자르기
yujindonut
2021. 8. 12. 11:33
728x90
조건
높이의 길이가 1,000,000,000보다 작거나 같은 양의 정수이기때문에 long타입을 써야하는 문제
sum 을 int로 지정해놔서 계속 틀렸다.
import java.util.Arrays;
import java.util.Scanner;
public class 나무의수 {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
int N = scan.nextInt();
int M = scan.nextInt();
long[] array = new long[N];
for (int i = 0; i < N; i++) {
array[i] = scan.nextLong();
}
Arrays.sort(array);
long left = 0;
long right = array[N - 1];
while(left <= right) {
long middle =(right + left) / 2;
long sum = 0;
for(long tree : array) {
if(tree > middle)
sum += (tree - middle);
}
if(sum >= M) {
left = middle + 1;
}
else
right = middle - 1;
}
System.out.println(right);
scan.close();
}
}
728x90