상세 컨텐츠

본문 제목

Java 2.두 숫자를 교환 (코딩테스트, 면접문제)

학습/Java 코딩테스트 예제

by husks 2023. 2. 14. 16:24

본문

반응형

2개의 값을 별도의 추가 변수 없이 교환하는 예제 입니다.

int a = 5;
int b = 7;

a = a ^ b;
b = a ^ b;
a = a ^ b;

System.out.println("a = " + a); // Output: a = 7
System.out.println("b = " + b); // Output: b = 5

위의 예에서는 먼저 a와 b 사이에 XOR 연산을 수행하고 결과를 a에 저장합니다.

 

그런 다음 다시 a와 b 사이에 XOR 연산을 수행하고 이번에는 결과를 b에 저장합니다.

 

마지막으로 a와 b 사이에 XOR 연산을 한 번 더 수행하고 그 결과를 a에 저장합니다.

 

이것은 세 번째 변수를 사용하지 않고 a와 b의 값을 효과적으로 교환합니다.

 

 

XOR 연산자란 비트 연산자로, 비트 값이 서로 다르면 1을 리턴하고 같으면 0을 리턴하는 연산자입니다.

 

위 소스를 풀어보면 아래와 같습니다.

 

5는 이진수로 101 입니다.

7은 이진수로 111 입니다.

 

a = a ^ b;

101

111

------

010 => a


b = a ^ b;

010

111

------

101 => b

 

a = a ^ b;

010

101

------

111 => a

반응형

관련글 더보기

댓글 영역