728x90
범위가 너무 크다는 생각에
이진탐색의 기준을 어떻게 잡아야할지 생각이 안나서
결국 구글링으로 정답을 찾아보게 되었다.
while True:
try:
x, y = map(int, input().split())
except EOFError:
break
now_z = int(y*100/x)
s, e = 1, 1000000000
while s < e:
m = (s+e)//2
mv = int((y+m)*100/(x+m))
if mv <= now_z:
s = m+1
else:
e = m
if int((y+e)/(x+e)*100) > now_z:
print(e)
else:
print(-1)
결국 찾고자 하는 값이 now_z보다 클 때의 값을 찾는 것이기 때문에
while의 조건을 s<=e가 아니라 s<e로 설정하고
else에서 e 지점을 줄이지 않고 그대로 가져간다.
728x90
'BOJ' 카테고리의 다른 글
[BinarySearch] 두 배열의 합 (0) | 2020.12.11 |
---|---|
[BinarySearch] 개똥벌레 (0) | 2020.12.08 |
[BinarySearch w/LIS] 반도체설계 (0) | 2020.12.06 |
[BinarySearch] K번째 수 1300번 (0) | 2020.12.03 |
[BinarySearch] 가장 긴 증가하는 부분 수열 2 (0) | 2020.12.03 |
댓글