게임

홍범선·2023년 11월 17일
0

알고리즘

목록 보기
27/59

문제

내가 풀었던 답

import sys
for test_case in range(1):
    x, y = map(int, sys.stdin.readline().split())
    cur_win = int((y / x) * 100)

    if x==y:
        print(-1)
    else:
        start = 1
        end = 1000000000

        while start <= end:

            mid = (start + end) // 2

            new_win = int(((y+mid) / (x + mid)) * 100)
            if cur_win < new_win:
                end = mid - 1
            else:
                start = mid + 1

        print(start)

처음에 승률 100%일 때와, 현재 승률 구하는 공식으로 int((y / x) * 100)을 했다.
하지만 이렇게 하니 통과하지 못했다.

승률 100% 뿐만 아니라 99%도 해줘야 한다. 왜냐하면 절대 100%는 될 수 없기 때문이다.
또한 int((y*100 / x))를 해주어야 했다.

그 이유는 실수 소수점 때문이다.
예를 들어 29/50이라 하면 0.58이지만
29/50*100을 하면 57.99999999가 나온다.

실수 계산을 최소화 하는 방식으로 해야겠다.

profile
알고리즘 정리 블로그입니다.

0개의 댓글