문제
문제 풀이
2진수로 변환을 하였을 때 1의 수량이 같은 다음 수를 찾아야 하는 문제이다. n 다음수를 반복문으로 돌리면서 2진수 변환후 1개수를 체크하는 방식으로 처리하였음.
나의 답안
public static int solution(int n) {
int answer = 0;
int target = 0;
for (int i = n; i <= 1000000 ; i++) {
String s = Integer.toBinaryString(i);
int count = 0;
for (int j = 0; j < s.length(); j++) {
if (s.charAt(j) == '1') count++;
}
if (i == n) {
target = count;
} else if (count == target) {
answer = i;
break;
}
}
return answer;
}
다른 답안
Integer 클래스에서 제공하는 bitCount함수를 사용하면 1의 개수를 확인 할 수 있다.
class TryHelloWorld
{
public int nextBigNumber(int n){
int a = Integer.bitCount(n);
while (Integer.bitCount(++n) != a) {}
return n;
}
public static void main(String[] args){
TryHelloWorld test = new TryHelloWorld();
int n = 78;
System.out.println(test.nextBigNumber(n));
}
}
'Programmers 문제풀이 > Lv.2' 카테고리의 다른 글
짝지어 제거하기 (0) | 2023.03.30 |
---|---|
피보나치 수 (0) | 2023.03.30 |
더 맵게 (0) | 2023.03.27 |
숫자의 표현 (0) | 2023.03.26 |
이진 변환 반복하기 (0) | 2023.03.26 |