BOJ - 1072

주의·2024년 1월 26일
0

boj

목록 보기
117/214

백준 문제 링크
게임

❓접근법

  1. 소수점을 버린 승률을 rate = int((y * 100) / x)로 지정한다.
  2. start = 1, end = 10 ** 9, isFalse = False로 지정한다.
  3. 기본 이분 탐색 코드에서,
  • int(((y + mid) / (x + mid)) * 100) > rate이면
    승률이 변할 수 있으므로 isFalse = True로,
    end = mid - 1로 변경한다.
  • rate보다 작거나 같으면 start = mid + 1로 변경한다.
  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)

0개의 댓글