https://school.programmers.co.kr/learn/courses/30/lessons/42587
이 문제는 성공했지만 toBinaryString()이라는 메서드를 이용하는 더 간단한 풀이 방법이 있어
비교해보려고 한다.
static String toBinaryString(int i)
String bin = Integer.toBinaryString(8); // 1000
static int parseInt(String s, int radix)
int t = Integer.parseInt("1000",2); //8 // 1000
import java.util.*;
class Solution {
public int[] solution(String s) {
//x의 모든 0을 제거
// x의 길이 c -> c를 2진법으로 표현한 문자열
// 1이 될때까지 이진 변환의 횟수와, 제건된 모든 0의 개수 배열에 담아 return
int n =0;
int rm=0;
while(true){
n++;
rm = rm+ s.length()-s.replace("0","").length();
s=s.replace("0","");
s= make_one(s.length());
if(s.equals("1")) break;
}
int[] answer = {n,rm};
return answer;
}
static String make_one(int t){
Stack<Integer> st = new Stack<>();
while(t!=0){
st.push(t%2);
t=t/2;
}
String result ="";
while(st.size()!=0){
result+=Integer.toString(st.pop());
}
return result;
}
}
class Solution {
public int[] solution(String s) {
//x의 모든 0을 제거
// x의 길이 c -> c를 2진법으로 표현한 문자열
// 1이 될때까지 이진 변환의 횟수와, 제건된 모든 0의 개수 배열에 담아 return
int n =0;
int rm=0;
while(true){
n++;
rm = rm+ s.length()-s.replace("0","").length();
s=s.replace("0","");
s= Integer.toBinaryString(s.length());
if(s.equals("1")) break;
}
int[] answer = {n,rm};
return answer;
}
}