반응형
 

코딩테스트 연습 - 다음 큰 숫자

자연수 n이 주어졌을 때, n의 다음 큰 숫자는 다음과 같이 정의 합니다. 조건 1. n의 다음 큰 숫자는 n보다 큰 자연수 입니다. 조건 2. n의 다음 큰 숫자와 n은 2진수로 변환했을 때 1의 갯수가 같습니

programmers.co.kr

 

n을 이진수로 변환했을 때 1의 개수를 구해준 뒤, n + i(i > 0)를 이진수로 변환했을 때의 1의 개수와 동일하다면, 다음 큰 숫자입니다.

 

#include <string>
#include <vector>

using namespace std;

int countOne(int num) {
    int cnt = 0;
    while(num != 0) {
        if(num & 1) cnt++;
        num = num >> 1;
    }
    return cnt;
}

int solution(int n) {
    int i = n + 1;
    for(int c = countOne(n); c != countOne(i); i++);
    return i;
}
반응형

+ Recent posts