https://www.acmicpc.net/problem/1522
문자열 교환이라는 의미를
단순히 b 라는 글자를 a로 바꾼다는것으로 이해를 해서 문제를 해석하지 못했었다.
a와 b를 자리교체 한다는 의미였다
abababababababa 를 3번 자리교체 해주면 된다
aaaaaaabbbbbbba 이렇게 된다
문제를 어떻게 풀어야 할지 그래도 감이 오지 않아서 찾아봤다
a가 8개라면 8개를 연속되게 만들어야 한다는것이다. 그리고 원형이라는 사실을 참고한다. 원래 문자열에서 8개 연속된 부분집합을 모두 찾고 그중에서 b의 개수를 세면된다.
import java.io.*;
import java.util.*;
public class Main {
public static void main(String[] args) throws IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String input = br.readLine();
int acnt = 0;
for (int i = 0; i < input.length(); i++) {
if(input.charAt(i) == 'a')
acnt++;
}
int left = 0;
int change = 100000000;
for (int i = 0; i < input.length(); i++){
int idx = left;
int tempchange = 0;
for (int j = 0; j < acnt; j++) {
if(input.charAt(idx) != 'a')
tempchange++;
idx++;
idx%=input.length();
}
change = Math.min(change, tempchange);
left++;
}
System.out.println(change);
}
}