본문 바로가기
Programming/Programmers

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

by 데이터현 2021. 10. 31.

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

 

코딩테스트 연습 - 예상 대진표

△△ 게임대회가 개최되었습니다. 이 대회는 N명이 참가하고, 토너먼트 형식으로 진행됩니다. N명의 참가자는 각각 1부터 N번을 차례대로 배정받습니다. 그리고, 1번↔2번, 3번↔4번, ... , N-1번↔N

programmers.co.kr

대진표 조건에 따라 구현하면 된다.

두 명이 같은 라운드에 있는 경우는 a-b의 절댓값이 1이고 둘을 더한 값에 4를 나눴을 때 나머지가 3이면 성립한다.

Ex: (1,2) , (3,4) , (5,6) -> 모두 3+4n의 규칙을 가진다.

다음 라운드의 번호를 구하려면 홀수일 경우 +1 후 2로 나누고 짝수일 경우 그냥 2로 나눠준다

 

나의 풀이

def return_next(num):
    if num%2 ==0:
        return num//2
    else: return (num+1)//2
def solution(n,a,b):
    answer = 1
    while True:
        if (abs(a-b)==1 and (a+b)%4==3):
            return answer
        else:
            a = return_next(a)
            b = return_next(b)
            answer+=1
    return answer

생각해보니 홀수이든 짝수이든 그냥 +1 하고 2로 나눠줘도 동작한다.

댓글