이 문제는 뭉쳐져 있는 0과 1의 개수 중 가장 작은 부분을 바꿔 주면 됩니다.
// k는 1의 개수 t는 0의 개수를 세겠습니다.
int k = 0, t = 0;
char prev = s.charAt(0);
// 인덱스 0번째부터 개수를 더해줍니당
if (prev == '1') {
k++;
} else {
t++;
}
// 이전의 인덱스의 0과 1이 달라지는 순간에 뒤집는 횟수가 추가 됩니다.
for (int i = 0; i < s.length(); i++) {
if (s.charAt(i) != prev) {
if (s.charAt(i) == '1') {
k++;
} else {
t++;
}
}
prev = s.charAt(i);
}
System.out.println(Math.min(k, t));