본문 바로가기

코딩테스트 연습/programmers

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

 

1. n의 1의 개수를 찾기

2. n을 +1 씩 증가시키면서 n의 1의 개수와 동일한 수를 찾아서 출력

 

class Solution {
    public int solution(int n) { 
        // n의 1의 개수
        int count = getCount(n);
        
        // n을 +1씩 증가시키면서 1의 개수가 같은 수 찾기
        while(true){
            if(count == getCount(++n)) break;
        }
        
        return n;
    }

    static int getCount(int n){
        int count = 0;
        while(n > 1){
            if(n % 2 == 1) count++;
            n = n/2;
        }
        
        if(n == 1) count++;
        
        return count;
    }
}