[Programmers]-이진 변환 반복하기

문제

이진수 문자열 x를 받는다.

  1. x의 모든 0을 제거한다.
  2. x의 길이를 이진법 문자열로 바꾼다.
  3. x가 1이 될 때 까지 바꾼다.
  4. 변환 과정을 몇번을 했는지, 전체 제거한 0의 수를 반환한다.

코드

class Solution {
    public int[] solution(String s) {
        return transform(s);
    }
    
    public int[] transform(String s){
        int cycle = 0;
        int erase_total = 0;
        int[] answer = new int[2];
        
        while(s.length() != 1){
            int erase_zero = 0;
            
            for(int i=0;i<s.length();i++){
                if(s.charAt(i)=='0') erase_zero++;
            }

            s = Integer.toBinaryString(s.length()-erase_zero);
            erase_total += erase_zero;
            cycle++;
        }
        answer[0] = cycle;
        answer[1] = erase_total;
        
        return answer;
    }
}

코드 설명

문자 알고리즘 대로 흘러간다.

요약

  • Integer.toBinaryString() : 이진수 String 반환