1.진수 변환
간단하면서도 함정에 빠지기 쉬운 문제.
자연수 n에 대하여 다음 조건을 만족하는 수를 구하여라
ex)
78(1001110)의 다음 큰 숫자는 83(1010011)이다.
#include <string>
#include <vector>
#include <iostream>
using namespace std;
int origin; //1의 갯수 저장.
string number="0123456789ABCDEF";
string change (int n){ //진수 변환 + 1의 갯수 파악
string result;
origin=0; //1의 갯수 초기화
if(n==0){
return "0";
}
else{
while(n>0){
result=number[n%2]+result;
n/=2;
}
}
for(int i=0; i<result.size(); i++){ //1의 갯수 파악
if(result[i]=='1'){
origin++;
}
}
return result;
}
int solution(int n) {
int answer = 0;
int sum; //n의 1의 갯수 저장
string binary;
string st;
binary=change(n);
sum=origin;
while(1){
n++; //조건 1 만족
st=change(n);
if(sum==origin){ //조건 2 만족
answer=n;
break;
}
}
return answer;
}