다음 큰 숫자
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 |
댓글