[C++] 프로그래머스 Level 2 : 다음 큰 숫자

Kim Nahyeong·2022년 10월 28일
0

프로그래머스

목록 보기
36/38

#include <string>
#include <vector>

using namespace std;

int solution(int n) {
    int answer = 0;
    int tmp = n;
    int ONE = 0;
    while(tmp > 1){
        if(tmp % 2 == 1){
            ONE++;
        }
        tmp /= 2;
    }
    
    int num = n;
    while(1){
        num++;
        int tmp = num;
        int one = 0;
        while(tmp > 1){
            if(tmp % 2 == 1){
                one++;
            }
            tmp /= 2;
        }
        
        if(one == ONE){
            answer = num;
            break;
        }
    }
    return answer;
}

사람들 푸는거 보니까 엄청 복잡하게 풀었던데 흠 굳이 그렇게까지?
그냥 1의 개수를 세면 되니까 진짜 그냥 이진수 변환하면서 1의 개수를 세면 된다.

0개의 댓글