이진 변환 반복하기

LJM·2023년 8월 24일
0

programmers

목록 보기
77/92

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

class Solution {
    public int[] solution(String s) {
        int[] answer = new int[2];
        
        int onecnt = 0;
        for(int i = 0; i < s.length(); ++i)
        {
            if(s.charAt(i) == '1')
                onecnt++;
        }
        
        int change = 1;
        int delete = s.length()-onecnt;//0이 몇개 지워졌나
        while(onecnt != 1)
        { 
            //System.out.println(onecnt + "," + change+"," +delete);
            int bitlen = Integer.toBinaryString(onecnt).length();//2진수 자리개수
            
            onecnt = Integer.bitCount(onecnt);//1 개수
            delete += bitlen - onecnt;//0이 몇개 지워졌나
            
            change++;
        }
        answer[0] = change;
        answer[1] = delete;
        return answer;
    }
}
profile
게임개발자 백엔드개발자

0개의 댓글