문제링크
접근한 방법
- 비트연산
풀이방법
- XOR와 AND연산을 이용한다.
- AND연산의 경우 연산을 한 후에 왼쪽으로 시프트를 한다.
- a와 b의 XOR, AND 및 왼쪽으로 시프트 연산의 결과를 놓고
또 연산을 반복하여 둘 중 하나의 연산 결과가 0이 나올 때까지 반복한다.
e.g.
소스코드 작성 방법
- getSum 메소드에 인자를 a와 b로 받는다.
- a와 b의 xor 연산을 한다.
- a와 b의 and 연산 후 왼쪽으로 시프트이동한다.
- 3가지 케이스로 나누어 return을 수행한다.
- xor한 연산의 값이 0일 때 and 연산 결과 return
- and+왼쪽으로 시프트한 연산의 값이 0일 때 xor 연산 결과 return
- 둘 다 0이 아니라면 연산 결과를 놓고 다시 반복 수행
소스코드
package leetcode.binary;
public class Q371_SumofTwoIntegers {
public static int getSum(int a, int b) {
int xor = a^b;
int and = (a&b) << 1;
if(xor == 0)
return and;
if(and == 0)
return xor;
else
return getSum(xor, and);
}
public static void main(String[] args) {
int a = 2;
int b = 3;
System.out.println(getSum(a,b));
}
}
반응형
'자료구조&알고리즘 > 바이너리' 카테고리의 다른 글
[leetcode] 바이너리 - 191번 Number of 1 Bits (Java) (2) | 2021.10.31 |
---|
댓글