백준/실버
[백준 1057번] 토너먼트 (C++)
게임개발기원
2025. 3. 2. 21:42
문제링크 : https://www.acmicpc.net/problem/1057
#include <bits/stdc++.h>
using namespace std;
int main(void)
{
ios_base::sync_with_stdio(false);
cin.tie(0);
int n, a, b, cnt = 0;
cin >> n >> a >> b;
while(a!=b)
{
a = (a+1)/2;
b = (b+1)/2;
cnt++;
}
cout << cnt;
return 0;
}
각 값들을 2로 나누면서 같아지는 순간을 체크한다.
다만 단순히 2를 나누는 것이 아니라 1을 더해주어야 한다.
7, 8을 예시로 들면 7/2 = 3, 8/2 = 4 이기에 둘 다 같은 4를 반환하려면 1을 더해줄 필요가 있다.
(8/2 = 4, 9/2 = 4)