https://school.programmers.co.kr/learn/courses/30/lessons/12911
(정답률 73%)
자연수 n이 주어졌을 때, n의 다음 큰 숫자는 다음과 같이 정의 합니다.
자연수 n이 매개변수로 주어질 때, n의 다음 큰 숫자를 return 하는 solution 함수를 완성해주세요.
n | result |
---|---|
78 | 83 |
15 | 23 |
class Solution {
public int solution(int n) {
int answer = n;
boolean isAnswer = false;
while (!isAnswer) {
if (oneCount(Integer.toBinaryString(n)) == oneCount(Integer.toBinaryString(++answer))) {
isAnswer = true;
}
}
return answer;
}
public int oneCount(String s) {
int cnt = 0;
for (int i = 0; i < s.length(); i++) {
if (s.charAt(i) == '1') {
cnt++;
}
}
return cnt;
}
}
import java.lang.Integer;
class TryHelloWorld
{
public int nextBigNumber(int n)
{
int a = Integer.bitCount(n);
int compare = n+1;
while(true) {
if(Integer.bitCount(compare)==a)
break;
compare++;
}
return compare;
}
public static void main(String[] args)
{
TryHelloWorld test = new TryHelloWorld();
int n = 78;
System.out.println(test.nextBigNumber(n));
}
}
푸는데 5분도 안걸린 문제인거 같다..
그래서 딱히 정리를 안하려고 했으나
다른 사람의 풀이를 보다가 좋은 메서드가 있어서 정리하려고 한다.
나는 이진수의 1의 개수를 세려고 메서드를 따로 만들었으나
이미 Integer클래스에 해당 메서드가 있었다.
bitCount(int 값)를 이용하면 따로 2진수로 변환할 필요없이
바로 1(true bit)의 개수를 계산해준다.
속도도 엄청 빠르다.