코딩 테스트/프로그래머스

프로그래머스 - 다음 큰 숫자 (자바)

programmers.co.kr/learn/courses/30/lessons/12911

 

코딩테스트 연습 - 다음 큰 숫자

자연수 n이 주어졌을 때, n의 다음 큰 숫자는 다음과 같이 정의 합니다. 조건 1. n의 다음 큰 숫자는 n보다 큰 자연수 입니다. 조건 2. n의 다음 큰 숫자와 n은 2진수로 변환했을 때 1의 갯수가 같습니

programmers.co.kr

굉장히 간단한 문제이지만 기억할만한 메서드가 있어서 설명을 작성하자면

Integer.bitCount(n) 이라는 메서드이다. 

n을 2진수로 변환 후 1의 개수를 리턴해주는 메서드이다.

 

1. 사용한 코드

class Solution {
    public int solution(int n) {
        int oneCount = Integer.bitCount(n);
        while(true) {
            if(Integer.bitCount(++n) == oneCount) break;
        }
        return n;
    }
}

 

2. 사용하지 않은 코드 (반복문을 통해서 직접 카운트)

 

class Solution {
    public int solution(int n) {
        String binaryN = Integer.toBinaryString(n);
        int oneCount = 0;
        for (char c : binaryN.toCharArray()) {
            if (c == '1') {
                oneCount++;
            }
        }

        while(true) {
            n++;
            String binaryTemp = Integer.toBinaryString(n);
            int count = 0;
            for (char c : binaryTemp.toCharArray()) {
                if (c == '1') {
                    count++;
                }
            }
            if (count == oneCount) {
                break;
            }
        }
        return n;
    }
}