[백준] 2512 예산

leeng·2024년 5월 3일
0

요즘 다시 백준을 풀다가... 이건 나중에도 주의해야겠다 싶어서 블로그에 기록 ㅠㅠ

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.StringTokenizer;

public class Main {
static int N;
static int[] req;
static int budget;

public static void main(String... args) throws IOException {
    BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
    StringTokenizer st = new StringTokenizer(br.readLine());
    N = Integer.parseInt(st.nextToken());
    req = new int[N];
    st = new StringTokenizer(br.readLine());
    for (int i = 0; i < N; i++) {
        req[i] = Integer.parseInt(st.nextToken());
    }
    Arrays.sort(req); <= for문에서 max값을 넣어줬으면 sort할 필요가 없었다!!
    st = new StringTokenizer(br.readLine());
    budget = Integer.parseInt(st.nextToken());

    int start = 0;
    int end = req[req.length - 1]; //  제일 큰 값

    while (start <= end) {
        int mid = (start + end) / 2;
        int sum = 0;
        for (int r : req) {
            sum += Math.min(r, mid);
        }
        if(sum <= budget){ <= 부등호 = 를 넣어야 하는지 아닌지 너무 헷갈린다... 꼭 주의해서 깊게 생각하도록!!
            start = mid + 1;
        }else {
            end = mid - 1;
        }
    }
    System.out.println(end);
}

}

profile
기술블로그보다는 기록블로그

0개의 댓글