슬라이딩 윈도우
이 문제의 핵심은 입력 받은 문자열 중에서 a의 갯수를 구한 다음, 그 만큼의 구간을 만들어 한 칸씩 이동하며 b의 개수를 세는 것 입니다.
구한 b의 갯수와 정답을 min으로 계속 비교하여 최종적으로 가장 적은 b의 갯수를 출력하게됩니다.
또 한 가지 중요한 점은 문자열이 원형으로 이어져 있다는 점인데, 이 조건 때문에 left를 문자열의 끝까지 탐색하고 넘치는 부분은 슬라이싱하여 붙힌 다음 구했습니다.
s = list(input())
a_cnt = s.count('a')
answer = 999999999999999
left = 0
while left < len(s):
right = left + a_cnt
if right > len(s):
temp = s[left:len(s)] + s[:right-len(s)]
else:
temp = s[left:right]
answer = min(answer, temp.count('b'))
left += 1
print(answer)