알고리즘

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

nayoon 2022. 9. 11. 15:50

프로그래머스 70129

 

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

 

프로그래머스

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

programmers.co.kr

분석

이진 변환을 반복하면서 몇 번 이진 변환을 진행했는지, 이진 변환을 진행하면서 제거한 0의 개수의 합을 answer 배열에 담으면 된다.

이진 변환을 멈추는 조건은 주어진 String s가 "1"이 될 때까지이다.

 

replaceAll을 통해서 "0"을 모두 ""으로 변환하고 replaceAll을 하기 전 문자열과 한 후 문자열의 길이를 비교한다.

또한, 변환한 문자열의 길이를 Integer.toBinaryString(int num) 메소드에 넣어서 이진수를 리턴받고 이 과정을 반복한다.

 

정답 코드

import java.util.*;

class Solution {
    public int[] solution(String s) {
        int[] answer = new int[2];
        int will = 0, curr = 0;
        int prev, next;
        while(!s.equals("1")) {
            prev = s.length();
            s = s.replaceAll("0", "");
            next = s.length();
        
            will += (prev - next);
            curr += 1;
            
            s = Integer.toBinaryString(next);
        }
        answer[0] = curr;
        answer[1] = will;
        return answer;
    }
}

'알고리즘' 카테고리의 다른 글

[leetcode] Roman to Int  (1) 2022.10.14
[leetcode] Two Sum  (0) 2022.10.13
[프로그래머스] JadenCase 문자열 만들기  (0) 2022.09.11
[프로그래머스] 숫자 문자열과 영단어  (0) 2022.09.08
[백준] 나무 자르기  (0) 2022.09.04