
자연수 n이 주어졌을 때, n의 다음 큰 숫자는 다음과 같이 정의 합니다.
예를 들어서 78(1001110)의 다음 큰 숫자는 83(1010011)입니다.
자연수 n이 매개변수로 주어질 때, n의 다음 큰 숫자를 return 하는 solution 함수를 완성해주세요.
문제 풀이
2진수에 관련된 메서드를 찾다가 2진수에서 1의 갯수를 찾는 메서드가 있다는 것을 알게 되었고, 그 메서드인Integer.bitCount()를 사용하여 문제를 풀었다.
먼저 n의 다음 큰 숫자 n+1와 n을 진수한 값을 초기화하였고, n 다음으로 큰 숫자부터 2진수의 1의 갯수를count와 비교하여 만족할 때까지answer값을 늘려가며 가장 작은 수를 찾았다.
코드
public int solution(int n) {
int answer = n + 1;
int count = Integer.bitCount(n);
while (Integer.bitCount(answer) != count) {
answer++;
}
return answer;
}