ALGORITHM

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

서울소시민 2017. 9. 5. 15:09

problem : 


78을 2진수로 변환하면 1001110이 나오는데 이때 1의 갯수는 4개이다. 같은 1의 갯수를 가지면서 

'다음 큰 숫자'를 찾으세요.


n에 숫자를 대입한후 그 숫자에 1씩올려서 2진수로 변환후 1의 갯수를 파악하여 

같은 1의 갯수가 나오면 return


#include
using namespace std;

int nextBigNumber(int n)//n은 현재의 숫자
  //가장 무식하게 풀려면 n에 숫자를 대입한후 그 숫자에 1씩올려서 2진수로 변환후 1의 갯수를 파악하여 같은 1의 갯수가 나오면 return 한다.
{
	int answer= n;
	int numof1=1;//앞자리는 always 1;
  int aumof1=1;
 
    while(answer!=1){//n이 1일 때 까지
      if(answer%2==1){
        numof1++;
        answer=answer/2;
      }
      else{
        answer=answer/2;
      }
    }//1의 갯수를 알려주는 code
  
  
  while(numof1!=aumof1){
    n++;
    answer=n;
    aumof1=1;
    while(answer!=1){
      if(answer%2==1){
        aumof1++;
        answer/=2;
      }else{
        answer/=2;
      }
    }
  }

  answer=n;
  
	return answer;
};
int main()
{
	int n=78;

	//아래는 테스트 출력을 위한 코드입니다.
	cout<<nextBigNumber(n);
}