BOJ

[BinarySearch] 게임 1072

YGSEO 2020. 12. 8. 02:50
728x90

suri78.tistory.com/214

 

[백준알고리즘] 1072번: 게임 -Python

[백준알고리즘] 1072번: 게임 -Python https://www.acmicpc.net/problem/1072 1072번: 게임 각 줄에 X와 Y가 주어진다. X는 1,000,000,000보다 작거나 같은 자연수이고, Y는 0보다 크거나 같고, X보다 작거나..

suri78.tistory.com

범위가 너무 크다는 생각에

이진탐색의 기준을 어떻게 잡아야할지 생각이 안나서

결국 구글링으로 정답을 찾아보게 되었다.

while True: 
    try: 
        x, y = map(int, input().split()) 
    except EOFError: 
        break 
        
    now_z = int(y*100/x) 
    s, e = 1, 1000000000 
    
    while s < e: 
        m = (s+e)//2 
        mv = int((y+m)*100/(x+m)) 
        
        if mv <= now_z: 
            s = m+1 
        else: 
            e = m 
    if int((y+e)/(x+e)*100) > now_z:
        print(e)
    else:
        print(-1)

결국 찾고자 하는 값이 now_z보다 클 때의 값을 찾는 것이기 때문에

while의 조건을 s<=e가 아니라 s<e로 설정하고

else에서 e 지점을 줄이지 않고 그대로 가져간다.

728x90