본문 바로가기

PS

[Programmers] LV2 - 이진 변환 반복하기

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

 

코딩테스트 연습 - 이진 변환 반복하기

 

programmers.co.kr

 

 

문제 파악

1. 0과 1로 이루어진 문자열의 모든 0을 제거한다.

2. 0을 제거한 문자의 길이를 다시 2진법으로 표현한다.

3. 다시 위의 과정을 문자열이 "1"이 될 때까지 반복한다.

 

더보기
import java.util.*;
class Solution {
    public int[] solution(String s) {
        int[] answer = new int[2];
        
        int zerocnt = 0;
        int cycle = 0;
        StringBuilder sb;
        
        while(!s.equals("1"))
        {
            sb =  new StringBuilder();
            for(int idx = 0; idx<s.length();idx++)
            {
                if(s.charAt(idx) == '1'){
                    sb.append("1");
                }
                else{
                    zerocnt++;
                }
            }
            cycle++;
            
            s = Integer.toBinaryString(sb.length());
            
        }
        answer[0] = cycle;
        answer[1] = zerocnt;
        return answer;
    }
}

 

이 문제에서 고려해야 될 점은...음.. 메모리와 속도 관련 정도인 것 같다

'PS' 카테고리의 다른 글

[Programmers] LV2 - 캐시  (0) 2021.06.27
[Programmers] LV2 - 큰 수 만들기  (0) 2021.06.26
[Programmers]LV2 - 뉴스 클러스터링  (0) 2021.06.26
[Programmers] LV2 - 스킬 트리  (0) 2021.06.25
[BOJ] 1022번: 소용돌이 예쁘게 출력하기  (0) 2021.06.23