ALGORITHM/PROGRAMMERS

[프로그래머스] 이진 변환 반복하기

0298 2021. 7. 27. 22:38

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

 

코딩테스트 연습 - 이진 변환 반복하기

 

programmers.co.kr

2021-07-27


1
2
3
4
5
6
7
8
9
10
11
12
13
14
class Solution {
    public int[] solution(String s) {
        int count = 0;
        int remove = 0;
        while(!s.equals("1")) {
            int tmp = s.length();
            s = s.replaceAll("0""");
            remove += (tmp - s.length());
            s = Integer.toBinaryString(s.length());
            count++;
        }
        return new int[]{count, remove};
    }
}
cs

 

#문제풀이

1. tmp 에 현재 s 문자열의 길이를 저장한다.

 

2. "0"이 들어간 것을 s 문자열에서 모두 제거한다.

 

3. 제거된 0의 갯수(remove)에 "0" 제거 전 문자열의 길이와 "0" 제거 후 문자열의 길이 차를 누적시킨다.

 

4. 남은 s의 길이로 2진수를 만든다.

 

5. s가 1만 남을 때까지 반복하면서, 총 이진변환의 횟수를 count 해준다.