이진변환 반복하기

공부한것 다 기록해·2023년 7월 29일
0

https://school.programmers.co.kr/learn/courses/30/lessons/70129

  1. 이진값의 0을 제거
    우선 0의 갯수를 카운팅 해주고, String의 replaceAll 메소드를 사용해서 0을 전부 제거해 준다.
  2. 제거해준 이진값의 길이
    String의 length()메소드를 사용해서 길이 값을 가져온다.
  3. 길이를 이진값으로 변환
    Integer.BinaryToString()메소드를 사용해서 length값을 이진값(문자열형태)로 변경해준다.

위 식을 while문을 사용해 String의 equals메소드로 1과 비교하여 같지 않을때까지 진행시켜준다.

코드

class Solution {
    public int[] solution(String s) {
        int[] answer = new int[2];

        int changeNum = 0; // 몇번 반복되는가
        int removeZero = 0; // 0이 총 몇번 제거되었는가

        while(!s.equals("1")){ // 1이 아닐때까지

            // 0갯수 세기
            for (int i = 0; i < s.length(); i++) {
                if(s.charAt(i) == '0'){
                    removeZero++;
                }
            }

            // 0제거 하기
            s = s.replaceAll("0","");

            // 길이 추출
            int length = s.length();

            // 길이 이진법 변환
            s = Integer.toBinaryString(length);

            changeNum++; // 횟수 추가
        }

        answer[0] = changeNum;
        answer[1] = removeZero;

        return answer;
    }
}

1개의 댓글

comment-user-thumbnail
2023년 7월 29일

이런 유용한 정보를 나눠주셔서 감사합니다.

답글 달기