https://school.programmers.co.kr/learn/courses/30/lessons/70129
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 |