https://school.programmers.co.kr/learn/courses/30/lessons/12985
class Solution {
public int solution(int n, int a, int b) {
int max = Math.max(a, b);
int min = Math.min(a, b);
int ex = log2(n);
int answer = 0;
while (ex >= 1) {
n = n / 2;
if (min <= n && max > n) {
break;
} else if (max <= n) {
ex--;
} else {
min = min - n;
max = max - n;
ex--;
}
}
return ex;
}
public static int log2(int N) {
return (int) (Math.log(N) / Math.log(2));
}
}
class Solution
{
public int solution(int n, int a, int b)
{
return Integer.toBinaryString((a-1)^(b-1)).length();
}
}
와우..
오.. 비트연산자..
2의 제곱과 관련된 문제중엔 다른사람 풀이처럼 비트연산자나 이진법으로 풀어내면 생각보다 빠르고 간단하게 문제를 해결할 수 있다.
음.. 푸는데 30분정도 걸린 것 같은데 비트연산자 활용하는 방법을 연습해봐야겠다.