Algorithm/Python

[파이썬/프로그래머스]예상 대진표

박한결 2021. 4. 2. 18:54

링크 programmers.co.kr/learn/courses/30/lessons/12985#

 

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

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

programmers.co.kr

규칙을 찾아보니 대진표의 짝수 숫자 //2 가 다음 대진표에 나가는거라서

a가 홀수일 경우에만 1을 더해주게 했는데, 다시 생각해보니 짝수든 홀수든 상관없이 1을 더하면 다음 대진표 숫자가 된다((1+1)//2=1, (2+1)//2=1 로 서로 같음).

그렇게 코드를 짰으면 더 간결했을 듯

def solution(n,a,b):
    answer = 0
    while a!=b:
        if a%2:
            a += 1
        if b%2:
            b += 1
        a, b = a//2, b//2
        answer += 1
    return answer

고쳐봤는데 답도 잘 나온다

def solution(n,a,b):
    answer = 0
    while a!=b:
        a, b = (a+1)//2, (b+1)//2
        answer += 1
    return answer

규칙을 제대로 찾은다음에 문제를 푸는게 참 중요한거같다