CodingTest Practice/Programmers

프로그래머스 : 다음 큰 숫자 (C++, Lv.2,연습문제)

몽땅마니아(MDD) 2022. 5. 18. 23:24

https://programmers.co.kr/learn/courses/30/lessons/12911

 

코딩테스트 연습 - 다음 큰 숫자

자연수 n이 주어졌을 때, n의 다음 큰 숫자는 다음과 같이 정의 합니다. 조건 1. n의 다음 큰 숫자는 n보다 큰 자연수 입니다. 조건 2. n의 다음 큰 숫자와 n은 2진수로 변환했을 때 1의 갯수가 같습니

programmers.co.kr

 

따로 코멘트할 것 없이 그냥 코드만 봐도 이해가 될 것이다! 레벨 2 치고 나름 쉬운 문제인 것 같다.

 

 

소스코드

#include <string>
#include <vector>

using namespace std;

// 해당 수를 2진수로 바꿀 때 1의 갯수
int get1(int n) {
    int count = 0;
    while(n) {
        if(n%2 == 1) count++;
        n= n/2;
    }
    return count;
}

int solution(int n) {
    //다음 수와 다음 수의 2진수 1의 갯수를 저장하는 변수 선언
    int next = n;
    int next1 = 0;
    
    //n의 2진수의 1의 갯수를 저장
    int n1 = get1(n);
    
    //n 다음수부터 하나씩 체크
    bool k = true;
    while(k) {
        next++;
        next1 = get1(next);
        if(next1 == n1) k = false;
    }
    return next;
}