[HackerRank] Maximizing XOR

아르당·2024년 5월 28일
0

HackerRank

목록 보기
96/109
post-thumbnail

문제를 이해하고 있다면 바로 풀이를 보면 됨
전체 코드로 바로 넘어가도 됨
마음대로 번역해서 오역이 있을 수 있음

Problem

두 개의 정수 l과 r이 주어질때, a와 b의 XOR 연산의 최대값을 찾아라. a와 b는 다음과 같은 조건을 가진다.

  • l <= a <= b <= r

예를 들어, 만약 l = 11이고 r = 12일 때

  • 11 ⊕ 11 = 0
  • 11 ⊕ 12 = 7
  • 12 ⊕ 12 = 0

최대값은 7이다.

Function Description

maximizingXor 함수를 완성해라. 계산된 최대값을 나타내는 정수를 반환해야한다.
maximizingXor 함수는 아래와 같은 매개변수를 가지고 있다.

  • l: 가장 낮은 값
  • r: 가장 높은 값

Constraints

  • 1 <= l <= r <= 10^3

Solved

비트 연산자가 있다는 것을 알면 쉽게 해결할 수 있다.

최대값을 할당해둘 정수 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;

All Code

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;
}
profile
내 마음대로 코드 작성하는 세상

0개의 댓글