X,Y = map(int,input().split())
Z = (Y * 100)//X
Result = 0
left = 0
right = X
if Z>=99:
print(-1)
else:
while left <= right:
middle = (left+right)//2
if (Y+middle)*100 // (X+middle)<=Z:
left = middle +1
else:
Result = middle
right = middle -1
print(Result)
이전 기록을 삭제할 수 없기 때문에 Z(승률)가 99 이상이면 리턴 값 -1인 조건을 출력
나머지는 이진탐색으로 범위를 좁힌다
left는 0 right는 X로 대입해서 left와 right의 중간값을 Z와 비교
승률이 넘어서면 midle-1로 탐색하는 범위를 절반씩 줄인다
이때 승률 소수점 계산을 math.floor로 했었는데 에러가 계속 떠서 // 연산자를 사용함
반응형
'Study' 카테고리의 다른 글
백준 2798: 블랙잭(Python) (0) | 2022.02.10 |
---|---|
Brute Force 브루트 포스 알고리즘 (0) | 2022.02.09 |
백준1009: 분산처리(Python) (0) | 2022.01.10 |
분할 정복[Divide and Conquer] 정리 (0) | 2022.01.04 |
백준9095: 1, 2, 3 더하기(Python) (0) | 2021.12.30 |
댓글