728x90
반응형
이진 변환 반복하기
⭐️ 코드
class Solution {
public int[] solution(String s) {
int[] answer = new int[2];
int changeBinaryCnt = 0;
int zeroCnt = 0;
String removeZeroStr;
while (s.length() != 1) {
// s에서 0 제거
removeZeroStr = s.replaceAll("0", "");
// 제거된 0의 개수
zeroCnt += s.length() - removeZeroStr.length();
// 이진 변환
String binary = Integer.toBinaryString(removeZeroStr.length());
changeBinaryCnt++;
s = binary;
}
answer[0] = changeBinaryCnt;
answer[1] = zeroCnt;
return answer;
}
}
💡 문제 풀이
생각보다 정말 쉬웠다..
메서드를 좀 알고 있다면 쉽게 풀 수 있는 문제였다.
우리가 사용할 메서드는 replaceAll(), Integer.toBinaryString()이다.
변수 선언
int changeBinaryCnt = 0; // 이진 변환 횟수를 세는 변수
int zeroCnt = 0; // 제거된 0의 개수를 세는 변수
String removeZeroStr; // 0을 삭제한 문자열
While 반복문 ( s가 1이 될 때까지 )
while (s.length() != 1) {
// s에서 0 제거
removeZeroStr = s.replaceAll("0", "");
// 제거된 0의 개수
zeroCnt += s.length() - removeZeroStr.length();
// 이진 변환
String binary = Integer.toBinaryString(removeZeroStr.length());
changeBinaryCnt++;
s = binary;
}
결과
👀 후기
푸는데 10분도 안 걸린 거 같다..?
나 점점 발전하고 있을지도..!?
728x90
반응형
'CodingTest > Programmers' 카테고리의 다른 글
[프로그래머스/Programmers] 피보나치 수 (Java - Lv2) (0) | 2023.01.27 |
---|---|
[프로그래머스/Programmers] 숫자의 표현 (Java - Lv2) (0) | 2023.01.26 |
[프로그래머스/Programmers] 두 큐 합 같게 만들기 (Java - Queue - Lv2) (0) | 2023.01.24 |
[프로그래머스/Programmers] 최댓값과 최솟값 (Java - Lv2) (0) | 2023.01.21 |
[프로그래머스/Programmers] 주식가격 (Java - Stack - Lv2) (0) | 2023.01.18 |