최대 1 분 소요

Question

Q Q2


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;
}

Result

Result