프로그래머스/2레벨

다음 큰 숫자/C++

Koalitsiya 2023. 1. 6. 15:15

프로그래머스 - 다음 큰 숫자

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

풀이방법

1. 들어오는 숫자를 이진변환한 후 1의 숫자를 세어 반환하는 함수를 선언한다.

2. n의 이진변환 시의 1의 갯수 num1과 num3의 이진변환 시의 1의 갯수 num2가 같으면 num3를 리턴한다.

#include <string>
#include <vector>

using namespace std;

int CountOne(int n) {
    int count = 0;
    string s = "";
    
    while(n > 0) {
        if(n % 2) {
            s = "1" + s;
            count++;
        }
        else s = "0" + s;
        n /= 2;
    }
    
    return count;
}

int solution(int n) {
    int answer = 0;
    
    int num1 = CountOne(n);
    int num2 = 0;
    int num3 = n;
    
    while(num1 != num2) {
        num3++;
        num2 = CountOne(num3);
    }
    
    return num3;
}