https://school.programmers.co.kr/learn/courses/30/lessons/12911
n이 이진수일 때 1의 갯수를 구해둔 뒤 n을 1씩 더해가면서 1의 갯수가 같은 수를 리턴한다.
#include <string>
#include <vector>
using namespace std;
int GetOne(int n)
{
int one = 0;
while(n)
{
if(n%2)
one++;
n = n >> 1;
}
return one;
}
int solution(int n) {
int answer = n;
int one = 0;
one = GetOne(n);
while(1)
{
answer++;
if(GetOne(answer) == one)
break;
}
return answer;
}
#include <bitset>
using namespace std;
int solution(int n) {
int num = bitset<20>(n).count();
while (bitset<20>(++n).count() != num);
return n;
}
bitset을 사용하였다. bitset의 count()함수를 사용하여 1의 갯수를 구한 뒤
++n해가면서 1의 갯수가 같은 수를 찾으면 그 수를 리턴한다.