[Algorithm Study] 백준 2512
문제 출처 : https://www.acmicpc.net/problem/2512
문제 접근
위의 문제는 최대 배분해 줄 수 있는 예산액을 구하는 문제로 이분 탐색 알고리즘을 활용하여 문제를 해결했습니다. 요청된 예산액 중 최대 예산액을 기준으로 이분 탐색을 거치며 총 예산액을 넘지 않은 선에서 최대 요청 예산액을 도출했습니다.
소스 코드
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args)throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st;
int N = Integer.parseInt(br.readLine());
long[] arr = new long[N];
st = new StringTokenizer(br.readLine());
for(int i = 0; i < N; i++){
arr[i] = Integer.parseInt(st.nextToken());
}
long cost = Integer.parseInt(br.readLine());
long answer = 0;
Arrays.sort(arr);
long s = 0;
long e = arr[N-1];
while(s <= e){
long mid = (s+e)/2;
long sum = 0;
for(long money : arr){
if(money > mid) sum += mid;
else sum += money;
}
if(sum > cost){
e = mid - 1;
}
if(sum <= cost){
s = mid + 1;
answer = Math.max(answer, mid);
}
}
System.out.println(answer);
}
}
Author And Source
이 문제에 관하여([Algorithm Study] 백준 2512), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@seokhwan-an/Algorithm-Study-백준-2512저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)