s
이진수 문자열 | "110010101001" | s의 길이는 1 이상 150,000 이하, s에는 '1'이 최소 하나 이상 포함
s가 "1"이 될 때까지 계속해서 s에 이진 변환을 가했을 때, 이진 변환의 횟수와 변환 과정에서 제거된 모든 0의 개수를 각각 배열에 담아 return
(x의 모든 0을 제거한 후, x의 길이를 c라고 하면, x를 "c를 2진법으로 표현한 문자열"로 바꾸고 위의 과정 반복)
1의 개수를 세고, Integer.toString()을 이용해 이진수 문자열로 변환하여 반복
class Solution {
public int[] solution(String s) {
int[] answer = new int[2];
while(true){
int x=0;
answer[0]++;
for(char c : s.toCharArray()){
if(c=='1'){
x++;
continue;
}
answer[1]++;
}
if(x==1)
break;
s = Integer.toString(x,2);
}
return answer;
}
}
Tip : Integer.toString(문자열, 진수) 메소드를 이용해 문자열을 빠르게 원하는 진수로 변환 가능하다.