파이썬/코딩테스트

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

대전집주인 2024. 3. 23. 16:50
728x90
SMALL

 

문제 이해

  • N명의 선수들중 A선수와 B선수가 붙게되는 라운드를 구하여라
  • 두선수는 무조건 이겨서 올라간다.
  • 이기면 앞션 참가자 번호의 첫번째 번호로 올라간다.

경기를 이기면 앞자리 번호로 이동하는데 번호 생성 규칙이 A/2 의 올림이다.

승부를 볼때마다 A와 B의 차례인지 확인한다.

A가 2의 n승일때 B = A-1 , B가 2의 n승일때 A = B-1 이면 A와 B의 승부 차례이다.

 

import math
def solution(n,a,b):
    answer = 1

    while True:
      if a % 2 == 0 and b == (a-1):
        break
      elif b % 2 == 0 and a == (b-1):
        break
      else:
        a = math.ceil(a/2)
        b = math.ceil(b/2)
        answer += 1

    return answer
728x90
LIST