[백준] 1072번 - 게임

yerimstar·2021년 9월 16일
1

이분탐색

목록 보기
7/10

아이디어

  • 계산법의 문제 : 100을 나중에 곱해주면 오차가 발생하기 때문에 미리 곱해주는 방식을 택함
  • 승률이 99이상일 경우 z값이 변화하지 않기 때문에 -1 출력

코드

# 게임
import sys
def binary(start,end,win):
    while (start <= end):
        mid = (start + end) // 2 # 더 해야 하는 게임 횟수
        check = (((Y + mid) * 100) // (X + mid))
        if check > win:
            end = mid - 1
        else:
            start = mid + 1
        result = start
    return result

X,Y = map(int,sys.stdin.readline().split()) # X = 실행횟수 Y = 이긴횟수
start = 0
end = X
win = ((Y * 100)//X)
if win >= 99:
    print("-1")
else:
    result = binary(start,end,win)
    print(result)
profile
백엔드 개발자

2개의 댓글

comment-user-thumbnail
2021년 9월 16일

승률이 변하지 않는 유일한 경우는 승률이 99 이상일때밖에 없군요 ㄷ ㄷ 님은 천재십니다
왜 이생각을 못했지여 저는 한번도 값이 바뀌지 않는걸 끝까지 다 검사했는데ㅠㅠ

1개의 답글

관련 채용 정보