코딩 테스트/프로그래머스

프로그래머스 - 이진 변환 반복하기 문제 (자바)

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

 

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

 

programmers.co.kr

 

고려해야하는 지점은

replace 이후  길이를 통해서 제거된 0의 개수 정도입니다.

 

ps

replace와 replaceAll의 차이

String replace(CharSequnce target, CharSequence replacement) - 특정 문자를 특정 문자로 변경

String replaceAll(String regex, String replacement) - 정규식에 해당 되는 경우 특정 문자열로 변경

ex)

String str = "aaabbbccccabcddddabcdeeee"; 

String result1 = str.replace("abc", "왕"); -> aaabbbcccc왕dddd왕deeee
String result2 = str.replaceAll("[abc]", "왕"); ->왕왕왕왕왕왕왕왕왕왕왕왕왕dddd왕왕왕deeee

 

// 프로그래머스 이진 변환 반복하기 문제
class Solution {
    public int[] solution(String s) {
        int[] answer = new int[2];
        while (!s.equals("1")) {
            int oLen = s.length();
            s = s.replace("0", "");
            int nLen = s.length();
            answer[0] += oLen - nLen;

            s = Integer.toBinaryString(nLen);
            answer[1] += 1;
        }
        return answer;
    }
}