관리 메뉴

막내의 막무가내 프로그래밍 & 일상

[알고리즘] 프로그래머스 이진 변환 반복하기 -문자열, 단순구현- 자바 본문

알고리즘/문자열, 정렬

[알고리즘] 프로그래머스 이진 변환 반복하기 -문자열, 단순구현- 자바

막무가내막내 2021. 6. 15. 12:18
728x90

 

 

 

 

 

프로그래머스 LV2 문제를 풀어봤습니다. ㅎㅎ  (휴일아침에 알골이라니...할게많다. 이모티콘 기능은 언제생겼찌)

문자열을 조작하는 단순 구현문제였습니다. 요즘 특정 알고리즘 말고 이런 문자열 조작과 시키는대로 단순 구현하는 문제들도 많이 나오는 추세라 중요하다고 생각합니다. 

 

풀이는 주석으로 대신합니다.

 

[Java]

class Solution {

    public int[] solution(String x) {
        int[] answer = new int[2];
        int removeCnt = 0; // 제거된 0의 모든 개수
        int convertCnt = 0; //변환 횟수

        while (!x.equals("1") && !x.equals("")) { //빈문자열이거나 1이 될때까지 반복
            // 1. x의 모든 0을 제거합니다.
            removeCnt += x.chars().filter(c -> c == '0').count();
            x = x.replaceAll("0", "");
            // 2. x의 길이를 c라고 하면, x를 "c를 2진법으로 표현한 문자열"로 바꿉니다.
            int c = x.length();
            StringBuilder str = new StringBuilder();
            while (c != 1) { // 1까지 나눠졌을때까지 반복
                str.insert(0, (c % 2));
                c = c / 2;
                if (c == 1) str.insert(0, 1);
            }
            x = str.toString();
            convertCnt++;
        }
        answer[0] = convertCnt;
        answer[1] = removeCnt;
        return answer;
    }
}

https://github.com/mtjin/algorithm_practice/blob/master/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4%20%EC%9D%B4%EC%A7%84%20%EB%B3%80%ED%99%98%20%EB%B0%98%EB%B3%B5%ED%95%98%EA%B8%B0%20-%EB%AC%B8%EC%9E%90%EC%97%B4%2C%20%EB%8B%A8%EC%88%9C%EA%B5%AC%ED%98%84-/Solution.java

 

mtjin/algorithm_practice

알고리즘 문제풀이 연습. Contribute to mtjin/algorithm_practice development by creating an account on GitHub.

github.com

 

 

 

 

댓글과 공감은 큰 힘이 됩니다. 감사합니다. !!  

 

 

 

728x90
Comments