👀 문제
https://programmers.co.kr/learn/courses/30/lessons/70129
👊 도전
1. 설계
- replace()로 0을 제거한다.
- 2진수로 변환은 Integer.toBinaryString()을 이용한다.
2. 구현
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
import java.util.*;
/**
*
* @author HEESOO
*
*/
class Solution {
public int[] solution(String s) {
int[] answer = {};
int zero=0, cnt=0;
while(!s.equals("1")){ // s==1이 될 때까지 반복
cnt++; // 수행 횟수
String removeZero=s.replace("0",""); // 0 제거
zero+=s.length()-removeZero.length(); // 삭제한 0 개수 카운트
s=Integer.toBinaryString(removeZero.length()); // 변경된 문자열 길이를 이진수 변환
}
answer=new int[2];
answer[0]=cnt;
answer[1]=zero;
return answer;
}
}
3. 결과
🤟 성공 🤟
4. 설명
- 0을 제거한다
- 제거는 replace()를 이용한다.
- 제거된 0의 개수는 원래 s의 길이에서 변경된 removeZero 길이를 뺀 값과 같다.
- 변경 길이를 2진수로 변환한다
- c는 removeZero.length()와 같다.
- 10진수를 2진수 문자열로 변경하는 것은 Integer.toBinaryString()을 이용한다.