코딩테스트
[프로그래머스][C++] [1차] 2개 이하로 다른 비트
이쿠우우
2022. 4. 15. 19:02
반응형
https://programmers.co.kr/learn/courses/30/lessons/77885
글쓴이의 답
개인적인 풀이 임으로
이것보다 더 좋은 알고리즘은 많음...
이렇게도 풀이하는구나.. 공유하기 위해 올림...
#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;
}
꾸준히 하다보면 실력이 늘겠지..
반응형