이진수 더하기

문제


문제 풀이

2진수로 변환을 하였을 때 1의 수량이 같은 다음 수를 찾아야 하는 문제이다. n 다음수를 반복문으로 돌리면서 2진수 변환후 1개수를 체크하는 방식으로 처리하였음. 


나의 답안

public static int solution(int n) {
    int answer = 0;
    int target = 0;
    for (int i = n; i <= 1000000 ; i++) {
        String s = Integer.toBinaryString(i);
        int count = 0;
        for (int j = 0; j < s.length(); j++) {
            if (s.charAt(j) == '1') count++;
        }

        if (i == n) {
            target = count;
        } else if (count == target) {
            answer = i;
            break;
        }
    }
    return answer;
}

다른 답안

Integer 클래스에서 제공하는 bitCount함수를 사용하면 1의 개수를 확인 할 수 있다.

class TryHelloWorld
{
    public int nextBigNumber(int n){
                 int a = Integer.bitCount(n);
          while (Integer.bitCount(++n) != a) {}
          return n;
    }
    public static void main(String[] args){
        TryHelloWorld test = new TryHelloWorld();
        int n = 78;
        System.out.println(test.nextBigNumber(n));
    }
}

'Programmers 문제풀이 > Lv.2' 카테고리의 다른 글

짝지어 제거하기  (0) 2023.03.30
피보나치 수  (0) 2023.03.30
더 맵게  (0) 2023.03.27
숫자의 표현  (0) 2023.03.26
이진 변환 반복하기  (0) 2023.03.26