프로그래머스Lv2 - 이진 변환 반복하기 - JAVA
본문 바로가기

알고리즘/프로그래머스

프로그래머스Lv2 - 이진 변환 반복하기 - JAVA

728x90
반응형

안녕하세요 놀이방 사장입니다.

 

이번 포스팅은 프로그래머스 Lv2

"이진 변환 반복하기" 문제입니다.

 

문제를 해석하자면 빨간색 표시한 부분처럼 반복해서 문자열 s를 "1"로 만들어주고 빨간색 친 과정을 몇 번 했는지와 이 과정을 걸치면서 0을 몇 개 삭제했는지 구해주면 되는 문제입니다.

 

빨간색 표시한 부분을 그대로 구현하면 됩니다.

class Solution {
    public int[] solution(String s) {
        int[] answer = new int[2];
        int del_Zero = 0;
        int trans_Bin = 0;
        String result = s;
        while(!result.equals("1")){
            for(int i=0; i<result.length(); i++){
                if(result.charAt(i) == '0'){
                    del_Zero++;
                }
            }
            result = result.replaceAll("0","");
            result = Integer.toBinaryString(result.length());
            trans_Bin++;
        }

        answer[0] = trans_Bin;
        answer[1] = del_Zero;
        return answer;
    }
}

제가 구현한 코드입니다.

일단 두개의 값을 저장해야해서 길이 2인 int형 배열을 선언해줍니다.

 

그 후 삭제된 0의 갯수는 del_Zero 변환 과정 횟수를 trans_Bin 변수에 담아줍니다.

while문을 이용해서 s 가 "1"이 될 때 까지 반복문을 돌려줍니다.

 

그리고 for을 사용해서 삭제될 0의 갯수를 세고 replaceAll을 이용해서 0을 다 삭제

그 후 Integer.toBinarystring 메소드를 이용해서 result의 길이를 2진수 변환

trans_Bin변수 값 ++ 

 

이렇게 구현해주면 풀립니다.

반응형