알고리즘/프로그래머스 Level2

[프로그래머스,자바] Level2: 이진 변환 반복하기

류창 2022. 2. 23. 19:19
반응형

 

문제분석

 

문제 목표: 1과 0으로 구성된 문자열을 조건에맞게 X번 적용할때 0이 지워진 갯수를 Y라할때 

X 와 Y를 구하자.

 

 

조건:

1. 1과 0으로 된 문자열에서 0을 모두제거

2.제거된 문자열의 길이를 N 이라할때, N을 2진법으로 다시 표현

3. 윗 과정을 숫자 1이될때까지 반복

 

 

매우 쉬운문제다. 사고력없이 문제가 시키는대로만 하면 풀리는 문제다.

 

 

우선, 조건 1대로 문자열에서 0을 제거하는건  자바에선 replace("0" , "")를 사용한다.

 

 

그후, 제거된 문자열의 길이를 잰뒤,  2진법으로 바꾸는 로직을 시행한다.

->여기서 동시에 제거된 0의갯수를 세준다.

->또한, 조건을 적용할 카운트도 세준다.

 

이 과정을 1이될때까지 (While)반복시킨다.

 

그리고 마지막에 세준 X, Y값을 반환하면끝이다.

문제풀이

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
class Solution {
    public int[] solution(String s) {
        int[] answer = new int[2];
        int rec_cnt=0;
        int zero_cnt=0;    
        while(!s.equals("1")){
        String temp=s;
        String str="";
        s=s.replace("0","");
        zero_cnt+=temp.length()-s.length();
        int len=s.length();
        while(len!=0){        
            str=len%2+str;
            len/=2;
        }
        s=str;
        rec_cnt++;
        }
        answer[0]=rec_cnt;
        answer[1]=zero_cnt;
        return answer;
    }
}
cs
반응형