Python/Algorithm

[프로그래머스] 예상 대진표 - Python

언킴 2023. 9. 23. 12:02
반응형

해당 문제는 대진표에서 대진을 하면서, A와 B가 몇 번째 붙는지를 찾는 문제다. A와 B는 무조건 계속 이긴다는 가정하고 있다. A와 B를 나누어서 결국 1, 2 혹은 3, 4 처럼 두 값의 차이가 하나 인 경우를 찾으면 된다.

 

def solution(n,a,b):
    for i, _ in enumerate(range(n//2)):
        if abs(a-b) == 1 and (a//2) != (b//2):
            return i + 1
        a = round(a/2 + 0.1)
        b = round(b/2 + 0.1)

a//2 와 b//2가 같은 경우는 2, 3 혹은 4, 5 와 같은 경우다. 해당 경우는 다음 경기에 붙기 때문에 그 결과를 제외하고 처리를 하면 된다.