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

Kerri·2021년 3월 19일
0

코테

목록 보기
28/67

안녕하세요 :)

https://programmers.co.kr/learn/courses/30/lessons/12985

프로그래머스 예상 대진표 문제입니다.

풀이

a와 b의 차이가 1이면 서로 붙게 되므로 return하면 됩니다.
여기서, 주의할 점은 단순히 1차이 나면 되는게 아니라
1 2 또는 3 4 이렇게 붙게되어야 한다는 점입니다.
2 3 이라면 서로 붙게되는 경우가 아닙니다 !
(2와 3이라면 1 2 / 3 4 승패 결정되고 나서 1 2로 붙게되어야 정답이됨)
즉, a와 b가 1만큼 차이나면서 둘 중 작은 값이 '홀수'여야만 서로 붙게되는 경우가 됩니다.

def solution(n,a,b):
    round = 1
    
    while True:
        if abs(a-b) == 1 and min(a, b) % 2 == 1:
            break
            
        round += 1
        
        if a % 2 == 1:
            a += 1
        if b % 2 == 1:
            b += 1
            
        a //= 2
        b //= 2

    return round
profile
안녕하세요 !

0개의 댓글