본문 바로가기
CodingTest/Programmers

[Programmers] 이진 변환 반복하기

by 창브로 2025. 5. 13.

[문제 링크]

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

 

프로그래머스

SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

 

[풀이 과정]

while문으로 반복하며 답이 1이나올때까지 반복합니다.

반복 내용은 문제와 같이 처음 문자에서 0을 빼고 자릿수를 2진법으로 바꾸는 것을 반복하면 됩니다.

 

[코드]

import java.util.*;

class Solution {
    public int[] solution(String s) {
        int[] answer = new int[2];
        
        int countZero = 0;
        int count = 0;
        String number = "";
        
        
        while(true) {
            
            if(s.equals("1")) {
                answer[0] = count;
                answer[1] = countZero;
                break;
            }
            
            char[] cArr = s.toCharArray();
            
            // 0 빼기
            for(int i = 0; i < cArr.length; i++) {
                if(cArr[i] == '0') {
                    countZero++;
                } else {
                    number += cArr[i];
                }
            }
            
            // 자릿 수를 2진수로 변경
            String n = Integer.toString(number.length(), 2);
            
            count++;
            
            // 수 초기화
            number = "";
            
            s = n;
        }
        
        return answer;
    }
}

[회고]

쉬웠습니다.

 

 

 

 

질문과 피드백은 언제나 환영입니다.

감사합니다.

'CodingTest > Programmers' 카테고리의 다른 글

[Programmers] 수식 최대화  (1) 2025.05.20
[Programmers] 신규 아이디 추천  (1) 2025.05.14
[Programmers] 3진법 뒤집기  (0) 2025.05.12
[Programmers] 문자열 압축  (0) 2025.05.12
[Programmers] 이상한 문자 만들기  (0) 2025.05.11