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

윤준혁·2024년 3월 26일

나의 풀이

class Solution {
    public int[] solution(String s) {
        int[] answer = new int[2];
        int remove = 0;
        int count = 0;
        
        while (s.length() > 1) { // 1
            int before = s.length(); // 2
            
            s = s.replaceAll("0", "");
            
            int after = s.length();
            
            remove = remove + (before - after);
            
            s = Integer.toBinaryString(after); // 3
            
            count++;
        }
        
        answer[0] = count; // 4
        answer[1] = remove;
        
        return answer;
    }
}

과정

  1. s가 1이 되면 길이가 1이니 길이가 1 이상일때만 반복하는 반복문을 선언
  2. before과 after를 선언해 0을 제거한 전, 후의 길이를 비교해서 remove에 저장
  3. s를 이진수로 변환하고 과정이 일어난 횟수를 증가
  4. 문제에 맞게 해당 변수들을 배열에 저장

다른 사람 풀이

class Solution {
    public int[] solution(String s) {
        int[] answer = new int[2];
        int temp;
        while( !s.equals("1") ) {
            answer[1] += s.length();
            s = s.replaceAll("0", "");
            temp = s.length();
            s = Integer.toBinaryString(temp);
            //System.out.println("s : " + s ); 
            answer[0]++;
            answer[1] -= temp;
        }
        return answer;  
    }
}

0개의 댓글