728x90
반응형
문제
정답 풀이
import java.util.*;
class Solution {
public int[] solution(String s) {
int[] answer = {};
//
answer = new int[2];
int count = 0;
int zeroCount = 0;
while(!s.equals("1")){
int oneCount = 0;
for(int i = 0; i < s.length(); i++){
if(s.charAt(i) == '1'){
oneCount++;
}
else if(s.charAt(i) == '0'){
zeroCount++;
}
}
s = Integer.toBinaryString(oneCount);
count++;
}
answer[0] = count;
answer[1] = zeroCount;
//
return answer;
}
}
- s가 "1"이 될 때까지 무한반복합니다
- count는 이진 변환 횟수, zeroCount는 제거한 0의 갯수, oneCount는 0 제거 후의 s의 길이를 뜻합니다
- if문 조건에 따라 oneCount와 zeroCount를 늘린 후 s를 oneCount를 활용하여 이진 변환해줍니다
- 이진 변환을 한번 실행했으므로 count 또한 늘린 후 다시 반복문을 돕니다
- 무한 반복에서 벗어났으면 크기가 2인 배열에 0번 인덱스에는 이진 변환 횟수를, 1번 인덱스에는 제거한 0의 갯수를 넣어줍니다
하나하나씩 해주면 어렵지는 않은 문제인 거 같습니다!
문제를 보면서 처음 본 건 toBinaryString이였습니다.
toBinaryString
// 10진수를 2진수로 변환
Integer.toBinaryString(8); // 1000
// 2진수를 10진수로 변환
Integer.parseInt("1000", 2); // 8
728x90
반응형
'Computer Science (CS) > 알고리즘' 카테고리의 다른 글
[백준/Java] 1152번 단어의 개수 (0) | 2023.05.02 |
---|---|
[백준/Java] 2675번 문자열 반복 (0) | 2023.05.02 |
[프로그래머스/Java] 올바른 괄호 (0) | 2023.04.28 |
[프로그래머스/Java] 최솟값 만들기 (0) | 2023.04.28 |
[프로그래머스/Java] JadenCase 문자열 만들기 (0) | 2023.04.28 |