Algorithm/Programmers

[Lv.2] 다음 큰 숫자 : Java

say! 2026. 1. 30. 16:28
728x90
 

프로그래머스

SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

 

1. n보다 큰 자연수

2. n이랑 2진수의 1 개수가 같음

=> 조건 1, 2를 만족하는 수 중 가장 작은 수 리턴

 

#정수 n의 2진수의 1의 개수 카운트해주는 함수

Integer.bitCount(n)

 

class Solution {
    public int solution(int n) {
        int answer = 0;
        
        // 2진수로 변환
        String bnum = Integer.toBinaryString(n);
        
        // 2진수의 1의 개수 카운트
        int o = countOne(bnum);
        
        // n보다 큰 수 중에서 n의 2진수 1개수가 같은 거 구하기
        int num = n;
        while(true){
            num++;
            
            // 이진수 변환
            String big = Integer.toBinaryString(num);
            
            if(o == countOne(big)){
                answer = num;
                break;
            }
        }
        
        return answer;
    }
    
    public int countOne(String bnum){
        int one = 0;
        for(int i=0; i<bnum.length(); i++){
            char c = bnum.charAt(i);
            
            if(c == '1') one++;
        }
        
        return one;
    }
}