본문 바로가기

Programmers

[프로그래머스][JAVA]Lv. 2 - 이진 변환 반복하기

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

 

프로그래머스

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

programmers.co.kr

처음 입력 s에서 0을 전부 제거 후 남은 1의 개수를 다시 2진법으로 변환, 이를 반복

반복한 수, 제거한 0의 개수를 결과로 출력하는 문제

class Solution {
    static int n = 0;
    static int m = 0;
    public int[] solution(String s) {
        func(s, s.length());
        return new int[]{n, m};
    }
    static void func(String s, int len) {
        if (len == 1) return;
        StringBuilder sb = new StringBuilder();
        String[] st = s.split("");
        for (int i = 0; i < len; i++) {
            if (!st[i].equals("0")) {
                sb.append(1);
            } else {
                m++;
            }
        }
        n++;
        String ns = Integer.toBinaryString(sb.length());
        func(ns, ns.length());
    }
}