728x90
반응형
안녕하세요 놀이방 사장입니다.
이번 포스팅은 프로그래머스 Lv2
"이진 변환 반복하기" 문제입니다.
문제를 해석하자면 빨간색 표시한 부분처럼 반복해서 문자열 s를 "1"로 만들어주고 빨간색 친 과정을 몇 번 했는지와 이 과정을 걸치면서 0을 몇 개 삭제했는지 구해주면 되는 문제입니다.
빨간색 표시한 부분을 그대로 구현하면 됩니다.
class Solution {
public int[] solution(String s) {
int[] answer = new int[2];
int del_Zero = 0;
int trans_Bin = 0;
String result = s;
while(!result.equals("1")){
for(int i=0; i<result.length(); i++){
if(result.charAt(i) == '0'){
del_Zero++;
}
}
result = result.replaceAll("0","");
result = Integer.toBinaryString(result.length());
trans_Bin++;
}
answer[0] = trans_Bin;
answer[1] = del_Zero;
return answer;
}
}
제가 구현한 코드입니다.
일단 두개의 값을 저장해야해서 길이 2인 int형 배열을 선언해줍니다.
그 후 삭제된 0의 갯수는 del_Zero 변환 과정 횟수를 trans_Bin 변수에 담아줍니다.
while문을 이용해서 s 가 "1"이 될 때 까지 반복문을 돌려줍니다.
그리고 for을 사용해서 삭제될 0의 갯수를 세고 replaceAll을 이용해서 0을 다 삭제
그 후 Integer.toBinarystring 메소드를 이용해서 result의 길이를 2진수 변환
trans_Bin변수 값 ++
이렇게 구현해주면 풀립니다.
반응형
'알고리즘 > 프로그래머스' 카테고리의 다른 글
프로그래머스LV2 - 다음 큰 숫자 - JAVA (0) | 2023.11.18 |
---|---|
프로그래머스 Lv2 - 숫자의 표현 - JAVA (0) | 2023.11.17 |
프로그래머스Lv2 - 최솟값 만들기 - JAVA (0) | 2023.11.14 |
프로그래머스LV2 - JadenCase문자열 만들기 - JAVA (0) | 2023.11.13 |
프로그래머스LV2 - 최댓값과 최솟값 - JAVA (0) | 2023.11.12 |