자바 알고리즘

[알고리즘] 프로그래머스 - 이진 변환 반복하기

Big Iron 2023. 5. 25. 00:46

1. 조건


image

2. 내 생각


처음 문제를 확인하고 대충 감은 왔다. 하지만 자바에서 어떻게 이진수로 변환시킬 지 감을 잡지 못했고 한참을 헤메다 이진수로 변환시켜주는 함수가 있다는 것을 알았다.

Integer.toBinaryString(숫자); 

이렇게 입력하면 간단하게 숫자를 이진수로 변환시킬 수 있었다

3. 실행 결과


import java.lang.Integer;

class Solution {
    public int[] solution(String s) {
        int[] answer = new int[2];
        int count = 0; // 반복 횟수
        int zeroCount = 0; // 0 삭제 횟수

        while (!s.equals("1")) { // 이진 변환값이 1이면 반복 중단
            int length = s.length(); // 이진법 문자열 길이
            s = s.replace("0", ""); // 이진법 문자열에서 0 제거

            // 전체 이진 문자 길이에서 0제거한 길이를 뺌
            // zeroCount엔 삭제한 0 갯수가 담김
            zeroCount += length - s.length(); 
            count ++; // 반복 횟수

            s = Integer.toBinaryString(s.length()); // 문자열 길이를 이진법으로 변환
        }

        answer[0] = count;
        answer[1] = zeroCount;
        return answer;
    }
}

image

중간중간 시간 복잡도가 높은 것도 있었지만 풀이 개념 자체는 맞은듯 하여 넘어갈 수 있었다.