프로그래머스(Programmers)

Level 2 > 다음 큰 숫자

cepiloth 2018. 9. 14. 19:17
반응형

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


1. 문제

입력 받은 숫자를 이진수로 변환하여 갖고 있는 1의 개수와 다음 숫자를 이 진수로 변환 했을 때 1의 개수가 같은 숫자를 찾는 문제


현재 숫자 - 78(1001110) == 1 의 개수 4 개

다음 큰 숫자 - 83(1010011) == 1 의 개수 4개


2. 알고리즘

키워드 - 구현


3. 코드


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <string>
#include <vector>
 
using namespace std;
 
int solution(int n) {
    
    int count = __builtin_popcount(n);
    // 현재 정수의 비트 카운트를 계산 한다.
    while(true)
    {
        // 반복문으로 n 의 값을 증가하며 2진수로 변환 했을 때
        // 비트 카운트가 같은 값을 찾는다.
        ++n;
        int cand = __builtin_popcount(n);
        if(count == cand) { 
            break;
        }
    }
    return n;
}
cs


반응형