본문 바로가기
코딩 테스트/알고리즘(Java)

[프로그래머스/Lv.2] 다음 큰 숫자

by KeepCoding 2025. 1. 16.

<문제>

 

 

 

<접근 방식>

 

1) n을 2진법으로 바꿨을 때 1이 몇개 있는지 카운팅 한다.

2) n 보다 큰 숫자를 하나씩 2진법으로 변환하면서 1을 카운팅해서 '1)'의 1 개수와 동일하면 가장 작은 자연수가 된다.

 

 

 

<코드>

class Solution {
    
    public int countOne(int a) {
        int countOne = 0;
        while(a != 0) {
            if(a % 2 == 1) {
                ++countOne;
            }
            a /= 2;
        }
        return countOne;
    }
    
    public int solution(int n) {
        int answer = 0;
        
        int oneCountForN = countOne(n);
        
        for(int i = n + 1; i < 1000000; i++) {
            if(countOne(i) == oneCountForN) {
                    answer = i;
                    break;
            }
        }
        return answer;
    }
}

 

반응형