[프로그래머스] 이진 변환 반복하기

fsm12·2023년 7월 28일
0

프로그래머스

목록 보기
50/57
post-thumbnail

문제링크

문제 이해

[ 입력형태 / 조건 ]

s
이진수 문자열 | "110010101001" | s의 길이는 1 이상 150,000 이하, s에는 '1'이 최소 하나 이상 포함

[ 문제 ]

s가 "1"이 될 때까지 계속해서 s에 이진 변환을 가했을 때, 이진 변환의 횟수와 변환 과정에서 제거된 모든 0의 개수를 각각 배열에 담아 return
(x의 모든 0을 제거한 후, x의 길이를 c라고 하면, x를 "c를 2진법으로 표현한 문자열"로 바꾸고 위의 과정 반복)

[ 풀이 ]

1의 개수를 세고, Integer.toString()을 이용해 이진수 문자열로 변환하여 반복




코드

> [성공] 1차 시도 : 구현

  • 생각한 풀이 그대로 구현
class Solution {
    public int[] solution(String s) {
        int[] answer = new int[2];
        
        while(true){
            int x=0;
            answer[0]++;
            for(char c : s.toCharArray()){
                if(c=='1'){
                    x++;
                    continue;
                }
                answer[1]++;
            }
            
            if(x==1)
                break;
            
            s = Integer.toString(x,2);
        }
        return answer;
    }
}



Tip : Integer.toString(문자열, 진수) 메소드를 이용해 문자열을 빠르게 원하는 진수로 변환 가능하다.

0개의 댓글