자바생
728x90

오답 노트 & 새로 알게 된 점

해당 문제는 매개 변수 탐색 방법을 사용하여 해결했다.

 

다른 매개 변수 탐색과 똑같은 문제였다.

 


코드

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
package Binary_Search;
 
import java.io.*;
import java.util.*;
 
public class BOJ13702 {
    static int atoi(String str) {
        return Integer.parseInt(str);
    }
    static int N; //주전자 개수
    static int K; //친구 명수
    static int A[];
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringTokenizer st = new StringTokenizer(br.readLine());
 
        N = atoi(st.nextToken());
        K = atoi(st.nextToken());
 
        A = new int[N];
 
        for (int i = 0; i < N; i++) A[i] = atoi(br.readLine());
 
        paraSearch();
    }
 
    static boolean possible(long target) {
        int cnt = 0;
 
        for (int i = 0; i < N; i++) {
            cnt += A[i] / target;
        }
 
        return cnt >= K;
    }
 
    static void paraSearch() {
        long s = 0, e = Integer.MAX_VALUE, rel = 0;
 
        while (s <= e) {
            long mid = (s + e) / 2;
 
            if (possible(mid)) {
                rel = mid;
                s = mid + 1;
            }
            else e = mid - 1;
        }
 
        System.out.println(rel);
    }
}
 
/**
 * N개의 주전자에 있는 막걸리를 K명에게 최대한 많은 양
 * -> 어떤 양이 주어질 떄, K명에게 줄 수 있느냐?
 */
 
cs
728x90
profile

자바생

@자바생

틀린 부분이 있다면 댓글 부탁드립니다~😀

검색 태그