problem :
78을 2진수로 변환하면 1001110이 나오는데 이때 1의 갯수는 4개이다. 같은 1의 갯수를 가지면서
'다음 큰 숫자'를 찾으세요.
n에 숫자를 대입한후 그 숫자에 1씩올려서 2진수로 변환후 1의 갯수를 파악하여
같은 1의 갯수가 나오면 return
#includeusing 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); }
'ALGORITHM' 카테고리의 다른 글
[?]프로그래머스_level3_N개의 최소공배수 (0) | 2017.09.07 |
---|---|
프로그래머스_level3_멀리뛰기 (0) | 2017.09.06 |
정수론_마법의 약 (0) | 2017.08.17 |
알고리즘의 정당성 증명 (0) | 2017.08.17 |
알고리즘 문제 접근 방법들 (0) | 2017.08.13 |