https://www.acmicpc.net/problem/1522
1. 코드
"""
이 문제가 브루트포스인 이유는 'a'가 연속되어 나타낼 수 있는 모든 경우를 모두 탐색하고
그 중 가장 최소 교환 횟수를 구해야 하기 때문이다.
연속된 'a'인 문자열의 경우를 슬라이딩 윈도우를 통해 하나씩 탐색한다.
답이 될 수 있는 문자열을 만든 후, 처음 입력값과 비교한다.
abababababababa
aaaaaaaabbbbbbb 4
baaaaaaaabbbbbb 4
bbaaaaaaaabbbbb 4
bbbaaaaaaaabbbb 4
bbbbaaaaaaaabbb 4
bbbbbaaaaaaaabb 4
bbbbbbaaaaaaaab 4
bbbbbbbaaaaaaaa 4
abbbbbbbaaaaaaa 3
aabbbbbbbaaaaaa 4
aaabbbbbbbaaaaa 3
aaaabbbbbbbaaaa 4
aaaaabbbbbbbaaa 3
aaaaaabbbbbbbaa 4
aaaaaaabbbbbbba 3
3
"""
ans = 99999
chars = input()
len_a = chars.count('a')
init = 'a' * len_a
for start in range(len(chars)):
result = ''
end = start + len_a - 1
if end > len(chars) - 1:
end = len(chars) - 1
over = len_a - (end - start + 1)
result += 'a' * over
result += 'b' * (len(chars) - len_a)
result += 'a' * (end - start + 1)
else:
result += 'b' * start
result += 'a' * len_a
result += 'b' * (len(chars) - len(result))
cnt = 0
for i in range(len(chars)):
if chars[i] != result[i]:
cnt += 1
ans = min(ans, cnt // 2)
print(ans)