다음 큰 숫자

공부한것 다 기록해·2023년 8월 1일
0

https://school.programmers.co.kr/learn/courses/30/lessons/12911

이 문제는 그냥 문제 흐름대로 풀었다.
(1) 주어진 n값에 대한 이진 수의 1의 갯수를 카운팅 해준 값을 따로 저장
(2) 완전탐색으로 n보다 큰수를 이진수로 변환하여 1의 갯수를 카운팅해서 n값을 이진 수로 변환한 1의 갯수를 카운팅 해준 값이 일치하는 n보다 큰 수를 찾아준다.

마지막 조건은 for문이 순차적으로 수를 탐지하므로 제일 작은 최솟값을 찾게된다.

class Solution {
    public int solution(int n) {
        int answer = 0;

        String nBinary = Integer.toBinaryString(n);
        int oneNum = getOneNum(nBinary);

        for (int i = n+1; i <=1_000_000; i++) {
            String iBinary = Integer.toBinaryString(i);
            int oneKNum = getOneNum(iBinary);
            if(oneKNum == oneNum){
                answer = i;
                break;
            }
        }

        return answer;
    }
    
    public int getOneNum(String binary){
        int num = 0;
        for (int k = 0; k < binary.length(); k++) {
            if(binary.charAt(k) == '1'){
                num++;
            }
        }
        
        return num;
    }
}

0개의 댓글