🙈

⃝ 동글동글 ⃝

🪐ᐩ˖ 🍎

CodingTest/Programmers

[프로그래머스/Programmers] 이진 변환 반복하기 (Java - Lv2)

JONG_UK 2023. 1. 26. 10:52
728x90
반응형
SMALL

이진 변환 반복하기
 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr


⭐️ 코드

class Solution {
    public int[] solution(String s) {
        int[] answer = new int[2];

        int changeBinaryCnt = 0;
        int zeroCnt = 0;

        String removeZeroStr;

        while (s.length() != 1) {
            // s에서 0 제거
            removeZeroStr = s.replaceAll("0", "");
            // 제거된 0의 개수
            zeroCnt += s.length() - removeZeroStr.length();
            // 이진 변환
            String binary = Integer.toBinaryString(removeZeroStr.length());
            changeBinaryCnt++;

            s = binary;
        }

        answer[0] = changeBinaryCnt;
        answer[1] = zeroCnt;

        return answer;
    }
}

💡 문제 풀이

생각보다 정말 쉬웠다..

메서드를 좀 알고 있다면 쉽게 풀 수 있는 문제였다.

우리가 사용할 메서드는 replaceAll(), Integer.toBinaryString()이다.

 

변수 선언
int changeBinaryCnt = 0; // 이진 변환 횟수를 세는 변수
int zeroCnt = 0; // 제거된 0의 개수를 세는 변수
String removeZeroStr; // 0을 삭제한 문자열
While 반복문 ( s가 1이 될 때까지 )
while (s.length() != 1) {
    // s에서 0 제거
    removeZeroStr = s.replaceAll("0", "");
    // 제거된 0의 개수
    zeroCnt += s.length() - removeZeroStr.length();
    // 이진 변환
    String binary = Integer.toBinaryString(removeZeroStr.length());
    changeBinaryCnt++;

    s = binary;
}
결과


👀 후기

푸는데 10분도 안 걸린 거 같다..?

나 점점 발전하고 있을지도..!?

728x90
반응형
LIST