문제
https://school.programmers.co.kr/learn/courses/30/lessons/12911
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
코드
#include <string>
#include <vector>
using namespace std;
int getOneCnt(int n) {
int oneCnt = 0;
while(n > 0) {
if(n % 2 == 1) oneCnt++;
n /= 2;
}
return oneCnt;
}
int solution(int n) {
int original = getOneCnt(n);
while(true) {
if(getOneCnt(++n) == original) {
return n;
}
}
}
풀이
getOneCnt 함수는 매개변수로 받는 정수를 2진수로 변환하는 과정에서 0의 수를 카운팅한다.
처음 입력받는 n 의 0 을 카운팅한다.
n 을 1씩 키우면서 처음 n 과 0의 수가 같으면 종료한다.