새소식

반응형
Algotithms

[백준] 1072 게임

  • -
728x90
반응형

문제

  • 게임 횟수 X 이긴 게임 Y 이 주어질 때, 최소 몇 판의 게임을 해야 승률 Z가 변하는지 구하기
    • 1 <= Y <= X <= 1,000,000,000
    • 승률은 백분율이고 소수점을 버린다. 예를 들어, X=53, Y=47이라면 Z=88이다.
  • Z가 절대 변하지 않는다면 -1 출력

 

풀이

  • 승률이 절대 바뀌지 않는 경우는, 처음 승률이 99% 이상일 때다.
  • 이진 탐색으로 0 ~ X 까지의 범위에서 승률이 바뀌는 경우를 찾는다.
X, Y = map(int, input().split())
z = Y*100//X    # 처음 승률

if z >= 99:     # 승률이 절대 바뀌지 않는 경우
    print(-1)
else:
    answer = 0  # 정답
    # 이진 탐색
    s, e = 1, X
    while s <= e:
        m = (s+e) // 2

        if int((Y+m)*100//(X+m)) > z :   # 승률이 바뀌면
            e = m - 1
            answer = m 
        else:
            s = m + 1
    print(answer)

 

References

  • 백준 1072
  • 2023.04.29 오늘의 문제
반응형

'Algotithms' 카테고리의 다른 글

[백준] 1166 선물  (0) 2023.05.01
[백준] 17485 진우의 달 여행 (Large)  (1) 2023.04.29
[백준] 1005 ACM Craft  (0) 2023.04.29
[백준] 16508 전공책  (0) 2023.04.29
[백준] 15886 내 선물을 받아줘 2  (0) 2023.04.28
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.