파이썬 알고리즘 : 예상 대진표

조건문

2024년 3월 11일 알고리즘 문제풀이

문제

난이도

Lv.2

코드

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
def solution(n,a,b):
    answer = 0

    # 다음 라운드로 진출하여 새로운 번호를 부여하는 함수
    def victory(num):
        if num%2:
            tmp = num//2 + 1
        else:
            tmp = num//2
        return tmp

    # 만났는지 확인하는 함수
    def check(p,q):
        if abs(p-q) == 1 and p//2 != q//2:
            return True
        else:
            return False

    cnt = 1
    while True:
        if check(a,b):
            return cnt
        a = victory(a)
        b = victory(b)
        cnt += 1

    return cnt

두 사람의 번호가 1 차이가 나지만 2로 나누었을 때 몫이 달라야 한다. 한 사람의 번호가 3일 때, 1 차이가 나는 수는 2와 4지만, 실제로 만나는건 몫이 다른 4이기 때문이다