유블로그

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

알고리즘

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

yujeong kang 2021. 1. 20. 10:07

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

 

소요시간 : 7분

 

하라는 대로만 하면 되는 문제!

 

1. s가 "1"인지 체크

2. replaceAll 로 0을 ""로 바꾸기

3. 이전길이 - 지금길이 를 answer[1] 에 더해주기

4. s가 "1"인지 체크

5. Integer.toBinaryString을 통해 이진변환하기

6. answer[0]에 +1 해주기

 

위의 6단계를 계속 반복한다.

class Solution {
    public int[] solution(String s) {
    	int[] answer = new int[2];
        answer[0]++;
        
        int prevLen = 0;
        while(true) {
        	if(s.equals("1")) break;
        	prevLen = s.length();
        	s = s.replaceAll("0", "");
        	answer[1] += prevLen - s.length();
        	
        	if(s.equals("1")) break;
        	s = Integer.toBinaryString(s.length());
        	answer[0]++;
        }
        
        return answer;
    }
}