문제

풀이

public int[] solution(String s) {
    int convertCnt = 0;
    int removedZeroCnt = 0;

    while (!s.equals("1")) {
        String temp = s.replaceAll("0", "");
        removedZeroCnt += (s.length() - temp.length());
        s = Integer.toBinaryString(temp.length());
        convertCnt++;
    }

    return new int[]{convertCnt, removedZeroCnt};
}

문제에서 하라는대로 순서대로 풀었다

  1. 변수

    1. removedZeroCnt : 0이 제거된 횟수 기록
    2. convertCnt : 변환횟수 기록
  2. while 문을 통해 최종 결과인 s 가 “1”이 될 때까지 반복한다.

    1. 임시 변수 temp 선언 : 현재의 s에서 0을 제거한 문자열

    2. 0이 제거된 횟수 : s.length() - temp.length() >> removedZeroCnt 에 누적해준다.

    3. s 변환 : temp 의 길이인 숫자를 2진수 String 으로 변환한 값을 s 에 다시 할당 >> convertCnt 값 +1 증가

      s = Integer.toBinaryString(temp.length())

  3. while 문을 통과하고 난 후의 convertCnt, removedZeroCnt 값을 배열로 리턴