코딩테스트

[프로그래머스][C++] [1차] 2개 이하로 다른 비트

이쿠우우 2022. 4. 15. 19:02
반응형

https://programmers.co.kr/learn/courses/30/lessons/77885

 

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

 

programmers.co.kr

 

글쓴이의 답

개인적인 풀이 임으로
이것보다 더 좋은 알고리즘은 많음...
이렇게도 풀이하는구나.. 공유하기 위해 올림...

#include <string>
#include <vector>
#include <cmath>
#include <iostream>
using namespace std;

vector<long long> solution(vector<long long> numbers) {
    vector<long long> answer;
    
    for(long long num : numbers){
        if(0==num%2){
            answer.push_back(num+1);
        }
        else{
            int count =0;
            long long temp = num;
            while( 0 < temp ){                
                int bi = temp%2;
                temp /=2;                
                if(0 == bi){
                    break;
                }
                count++;
            }
            
            long long m = pow(2, count-1);            
            long long result = pow(2, count);
            answer.push_back(num+result-m);
        }
    }
    
    return answer;
}





꾸준히 하다보면 실력이 늘겠지..

반응형