[Programmers] Level2 : 2개 이하로 다른 비트
Question
Solution
- 짝수일때 최하위 비트가 0이기때문에 1을 더해주면 가장 작은 수가 된다.
- 홀수일때 최하위 비트에서부터 1이 끝나는 자리에 1 더해주기
Cord
#include <string>
#include <vector>
using namespace std;
vector<long long> solution(vector<long long> numbers)
{
vector<long long> answer;
for (int i = 0; i < numbers.size(); ++i)
{
// 짝수 일땐 +1이 제일 작은 수 (최하위 비트가 0에서 1로 바뀜)
if (numbers[i] % 2 == 0) { answer.push_back(numbers[i] + 1); }
else // 홀수일 경우 (참고 풀이)
{
// 최하위 비트에서부터 1이 끝나는 자리에 1 더해주기
long long bit = 1;
while((numbers[i] & bit) != 0)
{
bit *= 2;
}
bit /= 2;
answer.push_back(numbers[i] + bit);
}
}
return answer;
}