[프로그래머스] Level.2 연습문제- 다음 큰 숫자

2021. 1. 12. 18:49Algorithm/프로그래머스

 

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

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

programmers.co.kr

 

문제설명
입출력예

 

 

나는 while문을 중복해서 썼지만 따로 함수를 구현해서

호출해서 사용하면 더욱 깔끔한 코드로 짤수있다 

이진수를 구하는 방법만 알면 굉장히 쉬운 문제라고 생각한다.

 

#include <string>
#include <vector>

using namespace std;

int solution(int n) {
    int answer = 0;
    int one=0;
    int number=n,num=n;
    int cache=0,temp=0;
    
    while(1){
        cache=n%2;
        if(cache==1) one++;
        n=n/2;
        if(n==0) break;
    }
    
    while(1){
        cache=0, temp=0;
        num=++number;
        while(1){
            cache=num%2;
            if(cache==1) temp++;
            num=num/2;
            if(num==0)break;
        }
        if(one==temp) break;
    }
    answer=number;
    return answer;
}