N

(프로그래머스 c++)2개 이하로 다른 비트 본문

프로그래머스 알고리즘/2단계

(프로그래머스 c++)2개 이하로 다른 비트

naeunchan 2021. 5. 28. 14:55
728x90
반응형

https://programmers.co.kr/learn/courses/30/lessons/77885?language=cpp 

 

코딩테스트 연습 - 2개 이하로 다른 비트

 

programmers.co.kr

 

https://ansohxxn.github.io/programmers/148/

 

[C++로 풀이] 2 개 이하로 다른 비트 ⭐⭐

📌 2 개 이하로 다른 비트

ansohxxn.github.io

 

비트 관련 문제는 아직 어려움이 있는 것 같다...ㅠ

다른 분의 사이트에서 참고하였고, 다시 공부해서 풀어봐야겠다.

#include <string>
#include <vector>
#include <iostream>

using namespace std;

vector<long long> solution(vector<long long> numbers) {
    vector<long long> answer;
    
    for(int i = 0; i < numbers.size(); i++){
        if(numbers[i] % 2 == 0){
            answer.push_back(numbers[i] + 1);
        }
        else{
            long long bit = 1;

            while(1){
                if((numbers[i] & bit) == 0){
                    break;
                }
                bit <<= 1;
            }
            
            bit /= 2;
            answer.push_back(numbers[i] + bit);
        }
    }
    
    return answer;
}
728x90
반응형