두 개의 정수와 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