본문 바로가기

Algorithm

[파이썬] 백준: 토너먼트

 

https://www.acmicpc.net/problem/1057

 

1057번: 토너먼트

김지민은 N명이 참가하는 스타 토너먼트에 진출했다. 토너먼트는 다음과 같이 진행된다. 일단 N명의 참가자는 번호가 1번부터 N번까지 배정받는다. 그러고 난 후에 서로 인접한 번호끼리 스타를

www.acmicpc.net

문제 풀이

 

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16

 1    2    3   4    5       6       7      8

    1         2                        4

          1                        2

 

숫자의 규칙만 알면 풀 수 있는 문제입니다.

예시 16강의 김씨: 8, 임씨: 9 인 경우, 위의 숫자처럼

8->4->2->1

9->5->3->2 로 숫자가 변합니다.

즉 해당 숫자에서 1을 더한 값에 나머지를 제외한 나누기 (//)를 계속 해주는 방식입니다.

이를 while 문에 대입하여, 두 숫자가 일치해질 때까지 카운트를 해주면 됩니다.

n, k, l = map(int, input().split())
cnt = 0

while k != l:
    k = (k+1) // 2
    l = (l+1) // 2
    cnt += 1

print(cnt)