Algorithm/programmers/2017 팁스다운 /level2/ 예상 대진표(with python)

yellow·2021년 6월 20일
0

알고리즘 문제

목록 보기
48/58

📖 문제

📝 풀이 과정

  • group을 현재 라운드에서 겨루게 되는 참가자의 쌍에 붙이는 번호라고 하자.
  1. 참가자 a와 참가자 b의 현재 라운드에서의 group을 구한다.
    1-1. 참가자 a와 참가자 bgroup이 같다면 이번 라운드에서 겨루게 됨을 의미한다.
    1-2. 참가자 a와 참가자 bgroup이 다르다면 다음 라운드로 올라간다.
        -> 현재 라운드에서 참가자의 group 번호(group)가 다음 라운드에서의 참가자 번호가 된다.

⌨ 코드

# 현재 게임 내에서 그룹 번호를 구하는 함수
def set_group_num(x):
    if x % 2 == 0:
        return x // 2
    else:
        return (x+1) // 2

# round_번째 라운드 게임
def game(round_, a, b):
    a_game_group = set_group_num(a)
    b_game_group = set_group_num(b)

    # 참가자 a와 참가자 b가 이번 라운드에서 겨루는 경우
    if a_game_group == b_game_group:
        return round_
    # 참가자 a와 참가자 b가 이번 라운드에서 겨루지 않는 경우
    else:
        return game(round_+1, a_game_group, b_game_group)

def solution(n,a,b):
           # 1라운드 부터 게임 시작
    return game(1, a, b)
profile
할 수 있어! :)

0개의 댓글