

참가자의 수는 무조건 2의 지수이다.
참가자의 수를 반으로 나누었을 때 A와 B가 다른 묶음에 속한다면 참가자의 수의 2의 지수 값이 정답이다.
예를 들어, 위의 예와 동일하게 8명의 참가자가 존재하고, A와 B가 각각 4와 7이라고 가정하자.
8을 2로 나누었을 때, A는 4 이하이고 B는 5 이상이다.
A와 B가 다른 묶음에 속하기 때문에 8의 2의 지숫값인 3이 정답이다.
주어진 N을 2로 나누면서 아래 조건문을 반복한다.
A와 B가 다른 묶음에 속한다면 N이 1일 될 때까지 2로 나누고 나누어진 횟수를 return 한다.
만약 A와 B가 동일한 묶음에 속한다면 N을 2로 나눈다.
이 때, A와 B가 모두 N/2보다 크다면 A와 B 모두 N/2 값을 빼준다.
class Solution
{
public int solution(int n, int a, int b)
{
while (n > 1) {
if ((a <= n/2 && b > n/2) || (a > n/2 && b <= n/2)) {
int num = 0;
for (; n > 1; n /= 2) {
num ++;
}
return num;
}
else if (a > n/2 & b > n/2) {
a -= n/2;
b -= n/2;
}
n /= 2;
}
return n;
}
}
