https://school.programmers.co.kr/learn/courses/30/lessons/70129
코딩테스트 연습 > 월간 코드 챌린지 시즌1 > 이진 변환 반복하기
난이도: LEVEL2
알고리즘 유형: 구현(10진수 → 2진수)
정답 코드
class Solution {
static int cnt = 0;
static int deleteCount = 0;
public int[] solution(String s) {
change(s);
int[] answer = {cnt, deleteCount};
return answer;
}
public static void change(String cur){
if(cur.equals("1")) return;
cnt++;
int cnt1 = 0; // 0의 개수
int cnt2 = 0; // 1의 개수
for(int i = 0; i < cur.length(); i++){
if(cur.charAt(i) == '0') cnt1++;
else cnt2++;
}
deleteCount += cnt1;
change(toBinary(cnt2));
}
public static String toBinary(int n){
StringBuilder sb = new StringBuilder();
while(n >= 2){
sb.append(n % 2);
n /= 2;
}
sb.append(n);
return sb.reverse().toString();
}
}
'Algorithm > Programmers Java' 카테고리의 다른 글
[JAVA] 프로그래머스 LEVEL2 튜플 (1) | 2024.10.14 |
---|---|
[JAVA] 프로그래머스 LEVEL2 롤케이크 자르기 (1) | 2024.10.14 |
[JAVA] 프로그래머스 LEVEL2 쿼드압축 후 개수 세기 (1) | 2024.10.13 |
[JAVA] 프로그래머스 LEVEL2 거리두기 확인하기 (1) | 2024.10.13 |
[JAVA] 프로그래머스 LEVEL2 줄 서는 방법 (1) | 2024.10.13 |