[프로그래머스] 다음 큰 숫자

Eunyoung Han·2022년 8월 2일
0

해결방법

  • 2진법으로 바꾸는건 간단했다,, 하지만 그 뒤 풀이법이 떠오르지 않았습니다 ^.ㅜ
  • 찾아보니 다음 큰 숫자 찾는것도 간단했습니다,,,,,
    • n보다 큰 수부터 1e6 이하의 숫자를 모두 살펴보면 된다
    • 그 숫자의 1의 개수 == n을 2진법으로 바꾸었을 때의 1의 개수라면 바로 정답

소스코드

#include <string>
#include <vector>

using namespace std;

int cnt1(int n){
    int cnt = 0;
    while(n>0){
        if(n&1) cnt++;
        n>>=1;
    }
    return cnt;
}

int solution(int n) {
    int answer = 0;
    int one = cnt1(n);
    for(int i = n+1; i<=1e6; i++){
        if(cnt1(i) == one){
            answer = i;
            break;
        }
    }
    
    return answer;
}
profile
HIU. CE / LG Elec.

0개의 댓글