접근 방법
이전에 풀었던 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);
}
}
'알고리즘 > Class 2' 카테고리의 다른 글
백준 BOJ 2869번 - 달팽이는 올라가고 싶다 (0) | 2022.09.03 |
---|---|
백준 BOJ 2839번 - 설탕 배달 (0) | 2022.08.31 |
백준 BOJ 2798번 - 블랙잭 (0) | 2022.08.30 |
백준 BOJ 2775번 - 부녀회장이 될테야 (0) | 2022.08.29 |
백준 BOJ 2751번 - 수 정렬하기 2 (0) | 2022.08.28 |
댓글