알고리즘 공부/프로그래머스

(Java)프로그래머스 코딩테스트 연습 - 월간 코드 챌린지 시즌1 - 이진 변환 반복하기

HRuler 2020. 11. 22. 19:59

1. 문제

https://programmers.co.kr/learn/courses/30/lessons/70129?language=java

 

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

 

programmers.co.kr

2. 나의 풀이

class Solution {
    public int[] solution(String s) {
        int spin_su = 0;
        int zero_su = 0;
        while(!s.equals("1")) {
        	String imsi = "";
        	for(int i = 0; i < s.length(); i = i + 1) {
        		if(s.charAt(i) == '1') {
        			imsi += 1;
        		}else if(s.charAt(i) == '0') {
        			zero_su ++;
        		}
        	}
        	s = Integer.toBinaryString(imsi.length());
        	spin_su++;
        }
        int[] answer = {spin_su, zero_su};
        return answer;
    }
}

3. 다른 사람 풀이

class Solution {
      public static int count;
    public static int zeroCount;
    public int[] solution(String s) {
 int[] answer = new int[2];
        count =0;
        zeroCount=0;
        recursive(s);
        answer[0] = count;
        answer[1] = zeroCount;
        return answer;
    }
    public static void recursive(String s){
        if(s.equals("1"))
            return;
        count++;
        StringBuilder sb = new StringBuilder();
        for(char c : s.toCharArray()){
            if(c=='0'){
                zeroCount++;
                continue;
            }
            sb.append(c);
        }
        recursive(Integer.toBinaryString(sb.length()));
    }
}