코드의 여백

[프로그래머스] Lv. 2 이진 변환 반복하기(Java)

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

프로그래머스

SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

 

정답 코드

class Solution {
    
    public int[] solution(String s) {
        int loop = 0;
        int removed = 0;
        while (!s.equals("1")) {
            int zeros = countZeros(s);
            loop += 1;
            removed += zeros;

            int ones = s.length() - zeros;
            s = Integer.toString(ones, 2);
        }

        return new int[] {loop, removed};
    }
    
    private int countZeros(final String s) {
        int zeros = 0;
        for (char c : s.toCharArray()) {
            if (c == '0') zeros++;
        }
        return zeros;
    }
    
}

 

설명

  1. 검사하는 문자열이 "1"이 될 때까지 반복
    • 문자열에 포함된 0의 개수 세기
      • 0의 개수와 제거 횟수 누적
    • 나머지 1의 개수를 사용해서 2진법으로 변환하여 1부터 반복
  2. 누적된 제거 횟수와 0의 개수를 배열로 반환

 

실행 결과

 

참고 자료 :

취업과 이직을 위한 프로그래머스 코딩 테스트 문제 풀이 전략 : 자바 편 | 김현이

 

프로그래머스 코딩 테스트 문제 풀이 전략: 자바 편 | 김현이 - 교보문고

프로그래머스 코딩 테스트 문제 풀이 전략: 자바 편 | 핵심 개념, 프로그래머스에서 선별한 79개 문제 풀이, PCCP 대비까지! 합격에 한 걸음 더 가까워지는 실전형 코딩 테스트 문제 풀이 가이드개

product.kyobobook.co.kr

블로그의 정보

코드의 여백

rowing0328

활동하기