Post

[프로그래머스] 다음 큰 숫자 - Java

2진수로 변환해주는 함수 toBinaryString, 비트수를 세주는 함수 bitCount

문제

다음 큰 숫자


아이디어

자연수 n을 2진수로 변환했을 때 ‘1’ 비트 갯수와 같은 갯수를 가지는 수를 찾으면 된다.

처음에는 직접 2진수 변환, 비트 갯수 세는 함수를 직접 구현했다.

근데 내장 메서드가 있었고.. (참고로, Long 타입에도 존재하는 메서드다)

  • 2진수 변환 : Integer.toBinaryString(n)
  • 비트 세기 : Integer.bitcount(n) (1의 개수를 반환한다.)

직접 구현한 것보다 월등히 빠르다 ㅎ.. 강추..


전체 코드

1
2
3
4
5
6
7
8
9
10
11
class Solution {
    public int solution(int n) {
        int nxt = n+1;
        int cnt = Integer.bitCount(n);
        while (true) {
            if (cnt == Integer.bitCount(nxt)) break;
            nxt++;
        }
        return nxt;
    }
}
This post is licensed under CC BY 4.0 by the author.