백준 문제 링크
게임
- 소수점을 버린 승률을 rate = int((y * 100) / x)로 지정한다.
- start = 1, end = 10 ** 9, isFalse = False로 지정한다.
- 기본 이분 탐색 코드에서,
- int(((y + mid) / (x + mid)) * 100) > rate이면
승률이 변할 수 있으므로 isFalse = True로,
end = mid - 1로 변경한다.- rate보다 작거나 같으면 start = mid + 1로 변경한다.
- 만약 isFalse가 계속 False이면 -1을,
True이면 start를 출력하면 끝!
x, y = map(int, input().split())
rate = int((y * 100) / x)
isFalse = False
start = 1
end = 10 ** 9
while start <= end :
mid = (start + end) // 2
if int(((y + mid) / (x + mid)) * 100) > rate: # 승률이 오를 수 있을 때
isFalse = True # z가 변할 수 있다
end = mid - 1
else:
start = mid + 1
if isFalse == False:
print(-1)
else:
print(start)