본문 바로가기

코딩테스트/programmers

이진 변환 반복하기

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

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

2진수를 숫자가 아닌 문자로 취급하면 조금 간단해진다.

 

1. 문자열의 0을 모두 제거하고, 제거 전 후의 문자 길이를 비교하여 제거된 0의 갯수 카운팅

2. 제거 후의 문자 길이를 이진수로 변환

 

위 두가지가 핵심이다.

class Solution {
    public int[] solution(String s) {
        
        int[] answer = new int[2];
        
        while (!s.equals("1")) {
            
            // 변환 전 문자 길이
            int before = s.length();
            
            s = s.replaceAll("0", "");
            
            // 변환 후 문자 길이
            int after = s.length();
            
            // 제거된 0의 개수
            answer[1] += (before - after);
            // 변환 횟수
            answer[0]++;
            
            // 이진 변환
            s = Integer.toBinaryString(after);
        }
        
        return answer;
        
    }
}

'코딩테스트 > programmers' 카테고리의 다른 글

하노이의 탑  (0) 2023.09.12
숫자의 표현  (0) 2023.09.11
올바른 괄호  (0) 2023.09.11
최솟값 만들기  (0) 2023.09.07
JadenCase 문자열 만들기  (0) 2023.09.07