두 개의 정수와 b가 있다고 가정합니다. 우리의 임무는 이 두 정수의 합을 찾는 것입니다. 한 가지 제약 조건은 + 또는 -와 같은 연산자를 사용할 수 없다는 것입니다. 따라서 a =5이고 b =7이면 결과는 12가 됩니다.
이 문제를 해결하기 위해 다음 단계를 따릅니다. −
- 해결을 위해 비트 논리 연산자를 사용합니다.
- b =0이면 a를 반환합니다.
- 그렇지 않으면 결과를 한 번 왼쪽으로 이동한 후 XOR b, a AND b를 제공하여 sum 함수를 재귀적으로 사용
예제(파이썬)
더 나은 이해를 위해 다음 구현을 살펴보겠습니다. −
#include <iostream> using namespace std; class Solution { public: int getSum(int a, int b) { return b == 0?a:getSum(a^b, (unsigned int)(a&b)<<1); } }; main(){ Solution ob; cout<<ob.getSum(5,7)<<endl; }
입력
a = 5 b = 7
출력
12