[C++로 풀이] 다음 큰 숫자⭐⭐

Date:     Updated:

카테고리:

태그:

📌 다음 큰 숫자

난이도 ⭐⭐

🚀 문제

image


🚀 내 풀이 ⭕

#include <string>
#include <vector>

using namespace std;

int solution(int n) {
    int answer = 0;
    
    int countOfN = 0;
    int temp = n;

    // countOfN -> n의 1의 개수 구하기
    while(temp > 0)
    {
        if (temp % 2 == 1)
            countOfN++;
        temp /= 2;
    }
    
    // n에서 1씩 더하면서 1의 개수가 countOfN에 일치하는 수를 찾는다.
    while(true)
    {
        int count = 0;
        
        temp = ++n;
        
        while(temp > 0)
        {
            if (temp % 2 == 1)
                count++;
            temp /= 2;
        }
        
        if (countOfN == count)
            break;
    }
    
    answer = n;
    
    return answer;
}

n이 이진수일 때의 1의 개수는 n이 몫이 0이 될 때까지 2로 계속 나눈 것의 나머지가 1인 경우를 센 것이 된다. 십진수에서 이진수 변환할 때 나머지 1 나오는 것 세기!!



🌜 개인 공부 기록용 블로그입니다. 오류나 틀린 부분이 있을 경우 
언제든지 댓글 혹은 메일로 지적해주시면 감사하겠습니다! 😄

맨 위로 이동하기

Programmers 카테고리 내 다른 글 보러가기

댓글 남기기