현재 번호가 n번이라면 다음 번호는 (n + 1) / 2가 됩니다. 다음 번호가 같다면 이번에 대결합니다.
서로 대결하지 않는 경우는 -1을 출력하라고 되어있지만 함정(?)입니다. 토너먼트의 경우는 계속 이기고 올라간다면 무조건 대결할 수 밖에 없습니다.
// 토너먼트
// 다음에 몇번을 받는지 구하는 함수
//👉 같은 번호를 받으면 이번에 대결한다는 뜻
func next(_ n: Int) -> Int {
(n + 1) / 2
}
// 입력 받기
let input = readLine()!.split(separator: " ").map { Int(String($0))! }
var a = input[1], b = input[2]
// 현재 라운드
var round = 1
// 반복문 통해서 구하기
//⭐️ 토너먼트이기 때문에 붙지 않는 경우는 없다! (-1 출력 구현 안해도 됨)
while true {
if next(a) == next(b) {
print(round)
break
}
a = next(a)
b = next(b)
round += 1
}