Algorithm/프로그래머스
[프로그래머스] Level.2 연습문제- 다음 큰 숫자
youngine
2021. 1. 12. 18:49
코딩테스트 연습 - 다음 큰 숫자
자연수 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;
}