[Programmers] 2개 이하로 다른 비트

Date:

[Programmers] 2개 이하로 다른 비트

Problem URL : 2개 이하로 다른 비트

#include <string>
#include <vector>

using namespace std;

vector<long long> solution(vector<long long> numbers) {
    vector<long long> answer;
    int size = numbers.size();
    for(long long &i : numbers) {
        if (i % 2 == 0){
            answer.push_back(i+1); // 짝수면 단순 + 1
        }else{
            long long x = 1;
            // 오른쪽 자리부터 처음 1이 아닌 숫자를 찾아준다.
            while( (x & i) != 0) {
                x = x << 1; 
            }
            answer.push_back(i + x / 2); // x만큼 더하고 x/2 만큼 빼주는 것
        }
    }
    return answer;
}

댓글