문제를 이해하고 있다면 바로 풀이를 보면 됨
전체 코드로 바로 넘어가도 됨
마음대로 번역해서 오역이 있을 수 있음
두 개의 정수 l과 r이 주어질때, a와 b의 XOR 연산의 최대값을 찾아라. a와 b는 다음과 같은 조건을 가진다.
예를 들어, 만약 l = 11이고 r = 12일 때
최대값은 7이다.
maximizingXor 함수를 완성해라. 계산된 최대값을 나타내는 정수를 반환해야한다.
maximizingXor 함수는 아래와 같은 매개변수를 가지고 있다.
비트 연산자가 있다는 것을 알면 쉽게 해결할 수 있다.
최대값을 할당해둘 정수 max를 선언하고 0을 할당한다.
int max = 0;
l과 r 범위를 순회해야하고, 같은 값끼리 연산이 가능하기에 이중 반복문을 사용했다. 이중 반복문 안에 매 xor연산의 값을 구하고 선언해둔 max 값보다 크면 xor 값을 할당한다.
for(int i = l; i <= r; i++){
for(int j = l; j <= r; j++){
int xor = i ^ j;
if(max < xor){
max = xor;
}
}
}
마지막으로 max를 반환한다.
return max;
public static int maximizingXor(int l, int r) {
int max = 0;
for(int i = l; i <= r; i++){
for(int j = l; j <= r; j++){
int xor = i ^ j;
if(max < xor){
max = xor;
}
}
}
return max;
}