문제풀이 흐름

  1. 검사하는 문자열이 “1”이 될 때까지 반복
    1. 문자열에 포함된 0의 개수 세기
      1. 0의 개수와 제거 횟수 누적
    2. 나머지 1의 개수를 사용해서 2진법으로 변환하여 1부터 반복
  2. 누적된 제거 횟수와 0의 개수를 배열로 변환

코드 작성

가장 먼저 반환해야 하는 값인 변환 횟수와 제거된 0의 개수를 담는 변수를 선언하고, 배열의 형태로 반환합니다.

public int[] solution(String s) {
	int loop = 0;
	int removed = 0;
	
	//S가 "1"이 될 때까지 반복하며 loop, removed 누적

	return new int[] {loop, removed};
}

1. 검사하는 문자열이 “1”이 될 때까지 반복

public int[] solution(String s) {
	int loop = 0;
	int removed = 0;
	
	while (!s.equals("1")){
	  //S가 "1"이 될 때까지 반복하며 loop, removed 누적
	}
	return new int[] {loop, removed};
}

1-A. 문자열에 포함된 0의 개수 세기

private int countZeros(String s) {
	int zeros = 0;
	for (char c : s.toCharArray()) {
		if( c == '0') zeros++;
	}
	return zeros;
}

1-A-i. 0의 개수와 제거 횟수 누적

while (!s.equals("1")){
	int zeros = countZeros(s);
	loop += 1;
	removed += zeros;

	// 문자열 s 변환
}

1-B. 나머지 1의 개수를 사용해서 2진법으로 변환하여 1부터 반복

while (!s.equals("1")){
	int zeros = countZeros(s);
	loop += 1;
	removed += zeros;

	int ones = s.length() - zeros;
	s = Integer.toString(ones, 2);
}

2. 누적된 제거 횟수와 0의 개수를 배열로 변환