새소식

반응형
알고리즘/c++

[프로그래머스] level2 다음 큰 숫자 - C++

  • -
728x90
반응형

면접준비 하기 싫어서 문제 풀었다 ㅎ

 

풀이 과정

두가지 방법으로 가능할듯

  1. 그냥 냅다 2로 나눠가며 1의 갯수 구하기
  2. bitset 라이브러리 활용

bitset 라이브러리를 활용해서, count()함수 사용하면 해당 이진수 중 1의 갯수 알 수 있음

 

정답 코드

2로 나눠가며 1의 갯수 구하기

using namespace std;

int countone(int n){
    int onenum=0;
    while(1){
        if(n==0)break;
        if(n%2==1) onenum++;
        n/=2;
    }
    return onenum;
}
int solution(int n) {
    int answer = n+1;
    int num=countone(n);
    while(1){
        if(num==countone(answer))break;
        answer++;
    }
    return answer;
}

 

bitset 라이브러리 활용

#include <bitset>

using namespace std;

int solution(int n) {
    int num=bitset<20>(n).count();
    int answer=n+1;
    int one=bitset<20>(answer).count();
    while(num!=one){
        one=bitset<20>(++answer).count();
    }
    return answer;
}

 

 

bitset 써서 막 한두줄로 기깔나게 코드짜는사람들 있던디 .. 멋지다 나두 언젠간 ~~ ..

반응형
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.