https://www.acmicpc.net/problem/1072
1.게임 횟수 : X와 이긴 게임 : Y를 입력
2.X와 Y의 형택이의 승률을 구한다 (Z)
3.기존의 Z 승률에서 최소 몇 판을 해야 Z가 변하는지 구한다(이분탐색 접근)
승률 구하기
//게임한 횟수
long x = sc.nextLong();
//이긴 게임
long y = sc.nextLong();
//승률 구하기
long z = (y * 100) / x;
Y는 %이기 때문에 * 100을 해줘야 한다
승률이 99% 이상일 경우 승률이 변하지 않기 때문에
종료
if(z >= 99) {
System.out.println("-1");
}
이분탐색 시작
Mid값 구하기
long mid = (start + end) / 2;
Mid값을 구했으면 Mid값의 변할때마다 승률을 구한다
long result = 100 *(y + mid) / (x + mid);
result값이 Z의 승률이 같아질 때까지 반복을 해준다
result가 Z보다 더 클 경우 end를 줄여주고
if(result > z) {
end = mid-1;
}
작을 경우 start를 +1 해준다
else {
start = mid + 1;
}
마지막으로 result와 z가 같을때 최소 판수를 출력
System.out.println(end);