다음 큰 숫자
x어떤 수 N(1≤N≤1,000,000) 이 주어졌을 때, N의 다음 큰 숫자는 다음과 같습니다.
N의 다음 큰 숫자는 N을 2진수로 바꾸었을 때의 1의 개수와 같은 개수로 이루어진 수입니다.
1번째 조건을 만족하는 숫자들 중 N보다 큰 수 중에서 가장 작은 숫자를 찾아야 합니다.
예를 들어, 78을 2진수로 바꾸면 1001110 이며, 78의 다음 큰 숫자는 83으로 2진수는 1010011 입니다.
N이 주어질 때, N의 다음 큰 숫자를 찾는 nextBigNumber 함수를 완성하세요.
예..? 2진수요..? 갑자기요..? 1갯수가 같고 더 큰 수 중 가장 작은 수요..?
는 Integer
클래스의 bitCount()
메소드로 깔끔하게 해결 ^^~!
bitCount()
메소드는 괄호 안에 숫자를 넣어주면 알아서 1의 개수를 세어준다. 내가 할 일은 비트카운트를 잘 저장해주고 숫자 크기를 점점 늘리면서 1의 개수가 같은 수가 나오는지 점검해주는 것 뿐이었다.
뭐 비트연산을 해줘야하나.. 나한테 뭘바라는건가.. 하다가 메소드 덕에 아~쥬 깔끔하게 해결!
x
class TryHelloWorld {
public int nextBigNumber(int n) {
int nBit = Integer.bitCount(n);
int answer = n;
while (true) {
answer++;
if (nBit == Integer.bitCount(answer)) break;
}
return answer;
}
public static void main(String[] args) {
TryHelloWorld test = new TryHelloWorld();
int n = 78;
System.out.println(test.nextBigNumber(n));
}
}
'공부 > algorithm' 카테고리의 다른 글
[programmers] N개의 최소공배수 (0) | 2018.05.22 |
---|---|
[programmers] 야근 지수 (0) | 2018.05.22 |
[programmers] 시저 암호 (0) | 2018.05.22 |
[programmers] 소수 찾기 (0) | 2018.05.22 |
[programmers] 하샤드수 (0) | 2018.05.22 |
댓글