728x90
https://programmers.co.kr/learn/courses/30/lessons/70129
문제 풀이
class Solution {
public static int[] solution(String s) {
int c = 0, b0 = 0, b1, l;
while (!s.equals("1")) {
c++; l = s.length();
b1 = 0;
for (int i = 0; i < l; i++)
if (s.charAt(i) == '1')
b1++;
b0 += l - b1;
s = Integer.toBinaryString(b1);
}
return new int[] { c, b0 };
}
}
class Solution {
public static int[] solution(String s) {
int c = 0, b0 = 0, b1, l;
while (!s.equals("1")) {
c++; l = s.length();
b1 = s.replaceAll("0", "").length();
b0 += l - b1;
s = Integer.toBinaryString(b1);
}
return new int[] { c, b0 };
}
}
- 문자열 s에서 1의 개수를 셈 ( b1 )
- 문자열 s의 길이 ( l ) 에서 b1을 뺀 게 제거해야 할 0의 개수 ( b0 ) ( 누적합 )
- b1을 이진수로 변환하여 s에 대입
- s가 "1"이 될 때까지 반복하고, 횟수를 카운트하여 c에 넣음
- 첫 번째 원소를 c, 두 번째 원소를 b0 로 하는 int[] 출력
반응형