class Solution
{
public int solution(int n, int a, int b)
{
int answer = 0;
while (a!=b) {
if (a % 2 == 1) a += 1;
if (b % 2 == 1) b += 1;
a/=2;
b/=2;
answer+=1;
}
return answer;
}
}
토너먼트 진행시 /2 한 값이 다음 경쟁번호이기때문에 재귀호출하면 되는 문제였다.
풀고나니 n이 필요하진 않았다!
class Solution
{
public int solution(int n, int a, int b)
{
int answer = 0;
while (a!=b) {
a = (a+1)/2;
b = (b+1)/2;
answer+=1;
}
return answer;
}
}
스터디 팀원분의 코드인데, 더 간결해졌다.
이렇게 +1을 하고 바로 2로 나눠도 되겠구나!
class Solution
{
public int solution(int n, int a, int b)
{
return Integer.toBinaryString((a-1)^(b-1)).length();
}
}
진짜 이걸 어떻게 생각한거지..?ㅋㅋㅋ
(예시)
4와 7일 때, -1씩 하면 3과 6 -> 11(2) XOR 110(2)이 되고 값은 "101"이 된다.
문자열 길이가 바로 3라운드로 출력 되는 것이다.
이걸 어떻게..?? 그림으로 그려놓고 2진수를 나열한 뒤 한참 보고서야 알았다.