2022-07-09 @이영훈
두 플레이어가 경기하는 경우는 자신의 번호를 2로 나눈 몫과 나머지를 더했을 때 같은 경우이다
예를들어 1과 2인 경우 2로 나눈 몫과 나머지를 더했을 때 같기 때문에 다음 경기에서 만난다
•
(1 // 2 + 1 % 2) = (0 + 1) = 1
•
(2 // 2 + 2 % 2) = (1 + 0) = 1
그리고 전체 플레이어 수(n)는 한 차례의 토너먼트를 거치면 2로 나눈 몫과 나머지를 더한만큼으로 줄어든다
•
n이 4인 경우, (4 // 2 + 4 % 2) = (2 + 0) = 2로 줄어들고
•
n이 5인 경우, (5 // 2 + 5 % 2) = (2 + 1) = 3으로 줄어든다.
def next_number(num):
return (num // 2) + (num % 2)
n, player1, player2 = map(int, input().split())
answer = 0
while True:
answer += 1
player1 = next_number(player1)
player2 = next_number(player2)
if player1 == player2:
break
print(answer)
Python
복사