알고리즘

[백준, 자바, 1072번] 게임 (이분 탐색)

hminor 2024. 8. 27. 17:40

풀이

  • 해당 문제를 푼 이유는 그냥 이분 탐색 문제여서 풀었으며
  • 특징적인 것을 확인했다.
  • 확인한 것으로는 무조건 작거나 같은 것을 묶기보단 가변적으로 생각 회로를 열어두는 것이
  • 좋을 것 같다는 생각을 했으며, 수학적인 점으로는 
  • 분자와 분모가 같은 값으로 더해질 경우 그에 대한 결과 값을 계속해서 커진다는 것.

 

import java.io.*;
import java.util.*;

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        int[] li = Arrays.stream(br.readLine().split(" ")).mapToInt(Integer::parseInt).toArray();
        int x = li[0];
        int y = li[1];
        long z = y*100L/x;
        int result = -1;

        int s = 0;
        int e = (int) 1e9;
        while (s<=e) {
            int mid = (s+e)/2;
            long new_persent = (y+mid)*100L/(x+mid);

            if (z != new_persent) {
                result = mid;
                e = mid-1;
            } else s = mid+1;
        }


        System.out.println(result);
    }
}