프로그래머스 | Lv.2 다음 큰 숫자 (Java)

728x90

프로그래머스 | Lv.2 다음 큰 숫자

문제 풀이

  • 입력된 n에 대한 2진수 속 1의 개수 카운팅시키기
  • while문 돌면서 n++ 시키며 n++의 2진수 속 1의 개수 카운팅 값이 태초의 n에 대한 카운팅 값과 일치하는 경우에 한해서만 answer = n 세팅한 뒤 break 걸어 while 탈출

코드

class Solution {
    public int solution(int n) {
        int answer = 0;
        //1) 일단 n의 2진수 속 1의 갯수 카운팅 
        String tmp = Integer.toBinaryString(n);
        int tmpCnt = 0;
        for(char x : tmp.toCharArray()){
            if(x == '1') tmpCnt++;
        }

        boolean chk = false;
        while(chk == false){
            n++;

            String A = Integer.toBinaryString(n);
            int cnt = 0;
            for(char x : A.toCharArray()){
                if(x == '1') cnt++;
            } 
            if(cnt == tmpCnt) {
                answer = n;
                chk = true;
                break;
            }
        }

        return answer;
    }
}
728x90