프로그래머스 70129
https://school.programmers.co.kr/learn/courses/30/lessons/70129
분석
이진 변환을 반복하면서 몇 번 이진 변환을 진행했는지, 이진 변환을 진행하면서 제거한 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 |