[devmoon] 프로그래머스 - (Java)이진 변환 반복하기
알고리즘/프로그래머스

[devmoon] 프로그래머스 - (Java)이진 변환 반복하기

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

 

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

 

programmers.co.kr

1. 유형

재귀

 

2. 시뮬레이션

그냥 요구 조건대로 구현하면 될듯

 

3. 코드

import java.util.*;
class Solution {
    public int[] solution(String s) {
        int[] answer = {};
        List<Character> list = new ArrayList<>();
        int zeroCount=0;
        int turnCount=0;
        while(!"1".equals(s)){
            list.clear();
            for(char c : s.toCharArray()){
                if(c=='1'){
                    list.add(c);
                }else
                    zeroCount++;
            }
            s=rec(list.size());
            turnCount++;
        }
        answer = new int[]{turnCount, zeroCount};
        return answer;
    }
    static String rec(int n){
        int mok = n/2;
        int na = n%2;
        if(mok == 0){
            return itos(na);
        }
        return rec(mok)+itos(na);
    }
    static String itos(int n){
        return String.valueOf(n);
    }
}