❗️처음 풀이 법
1. 문제 요구사항 그대로 구현
2. 숫자를 2진법으로 바꿀 때
-> 숫자 % 2 의 결과로 0과 1의 개수를 세어줌
-> 1의 개수를 다시 2진법으로 변환 (반복)
... 그런데 Integer.toBinaryString()
이라는 친절한 메소드가 있었다 ㅎ
그래서 다른 방법으로도 풀었다 ㅎ....
❗️두 번째 풀이 법
➡️ 반복, 반복 횟수 저장
// 첫 번째 풀이
public int[] solution(String s) {
int zero = 0;
int num;
for (char c : s.toCharArray())
if (c == '0') zero++;
num = s.length() - zero;
int count = 1;
while (num != 1) {
count++;
int len = 0;
while (num != 0) {
if (num % 2 == 0) zero++;
else len++;
num /= 2;
}
num = len;
}
return new int[]{count, zero};
}
// 두 번째 풀이 - Integer.toBinaryString() 사용
public int[] solution(String s) {
int count = 0;
int zero = 0;
while (!s.equals("1")) {
int len = s.length();
s = s.replace("0", "");
zero += len - s.length();
s = Integer.toBinaryString(s.length());
count++;
}
return new int[]{count, zero};
}