해맑은욱 2019. 9. 5. 16:25
*다음 큰 숫자 (while문) 
자연수 n, 다음 큰 숫자 구하기. 
2진수로 변환했을때 1의 갯수가 같은 수중에 최솟값. 
 
#include <iostream>
#include <vector>
 
using namespace std
 
int resultCount(int n) 
    vector v; 
    while(n > 0
    { 
        v.push_back(n % 2); 
        n /= 2
    } 
 
    int count = 0
    vector::iterator iter; 
    for(iter = v.begin(); iter != v.end(); ++iter) 
    { 
        if(*iter == 1
            count++
    } 
    return count; 
 
int solution(int n) { 
    int answer = 0
 
    int i = 0
    int k = 0
 
    i = resultCount(n); 
 
    while(true
    { 
        n++
        k = resultCount(n); 
 
        if(i == k) 
            break
    } 
 
    return n; 
 
다른 방식 
#include <iostream> 
 
using namespace std
 
int resultCount(int n) 
    int count = 0
    while(n > 0
    { 
        count += n % 2
        n /= 2
    } 
 
    return count; 
 
int solution(int n) { 
    int answer = 0
 
    int i = 0
    int k = 0
 
    i = resultCount(n); 
 
    while(true
    { 
        n++
        k = resultCount(n); 
 
        if(i == k) 
            break
    } 
 
    return n; 
 
cs