본문 바로가기
자료구조&알고리즘/바이너리

[leetcode] 바이너리 - 371번 Sum of Two Integers (Java)

by _din 2021. 10. 16.

문제링크

 

Sum of Two Integers - LeetCode

Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview.

leetcode.com

 

 

접근한 방법

  • 비트연산

 


풀이방법

  • 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));

    }
}
반응형

댓글