https://www.acmicpc.net/problem/1057
import sys
import math
# with open("./data.txt", "r") as file:
# def input():
# return file.readline()
def input():
return sys.stdin.readline()
N, K, I = map(int, input().split(" "))
nowRound = 1
meet = False
stop = False
while not stop:
if(N < 2):
stop = True
break
# 라운드 (for문이 끝나면 1라운드 종료)
for i in range(1, N, 2):
a = i
b = i+1
# 김씨와 임씨가 대결하는 라운드라면
if((K == a and I == b) or (K == b and I == a)):
meet = True
stop = True
break
if(not meet):
nowRound += 1
K = math.floor((K+1) / 2)
I = math.floor((I+1) / 2)
if(N % 2 != 0):
N = math.floor((N+1)/2)
else:
N = math.floor(N/2)
if(meet):
print(nowRound)
else:
print(-1)
좀 어려웠다.. 한시간이나 걸렸네.
라운드가 끝날때마다 인원수를 절반씩 줄여주면서
인원이 2보다 낮거나 김씨와 임씨가 만날때까지 반복하면 된다.
처음에 고민이었던건 라운드가 지날때마다 어떻게 김씨와 임씨의 번호를 바꿔주지?
값을 저장해놓는 배열이 필요하려나?
생각했는데 그럴 필요 없이 어차피 무조건 이긴다는 전제가 있고
인원이 절반씩 사라지고 번호를 재정렬하기 때문에
번호에 나누기 2를 계속 해주면 언젠가는 만나게 된다.