CodingTest

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

curiousKidd 2023. 4. 28. 10:37
반응형

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

 

프로그래머스

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

programmers.co.kr

 

특정 문자열(2진수로 이루러진)이 주어지면,

1. 0을 제거한 후 

2. 제거된 문자의 length를 확인

3. length 값을 다시 2진수로 변환

 

해당 과장을 반복하여, 반복된 횟수와 제거된 0의 갯수를 return 하는 문제입니다.

 

public static int[] solution(String s) {
     int n = s.length() - s.replace("0", "").length();  // 0 제거 개수
     int replaceLength = s.replace("0", "").length();    // length

     int i = 1;

     while (replaceLength != 1) {
         i++;
         s = Integer.toBinaryString(replaceLength);
         n += s.length() - s.replace("0", "").length();  // 0 제거 개수
         replaceLength = s.replace("0", "").length();    // length
     }

     return new int[]{i, n};
 }

 

저같은 경우는 최초로 받은 숫자가 무조건 2진수 이기에 처음 변수에 할당할때 0을 제거하였습니다.

그 다음 while문을 반복하여 결과값을 도출하였습니다.

 

테스트 결과 문제없이 진행되었습니다.

 

 

반응형

'CodingTest' 카테고리의 다른 글

[프로그래머스] JadenCase 문자열 만들기  (0) 2023.05.01
[프로그래머스] 최솟값 만들기  (0) 2023.04.28
[백준][11399] ATM  (1) 2022.10.05
[백준] 코드 제출 필수 내용  (0) 2022.09.29
[백준][2839] 설탕 배달  (1) 2022.09.29