32 lines
924 B
Python
32 lines
924 B
Python
# 문자열 교환
|
|
|
|
import sys
|
|
|
|
input = sys.stdin.readline
|
|
|
|
def solution():
|
|
s = input().rstrip()
|
|
|
|
k = s.count("a")
|
|
k_count = {"a": s[:k].count("a"), "b": s[:k].count("b")}
|
|
circle = s + s
|
|
result = k_count["b"]
|
|
for i in range(1, len(circle)-k):
|
|
k_count[circle[i-1]] -= 1
|
|
k_count[circle[i+k-1]] += 1
|
|
result = min(result, k_count["b"])
|
|
|
|
print(result)
|
|
return
|
|
|
|
|
|
solution()
|
|
|
|
"""
|
|
걸린 시간: 못 품
|
|
|
|
시간 복잡도: 전체에서 a의 개수(k)를 세고, k구간씩 옮겨가며 b개수를 슬라이딩 윈도우로 업데이트하기 때문에 전체 시간복잡도는 O(n)이다.
|
|
|
|
해설: 원형이라고 했기 때문에 같은 것 2배를 해준 문자열을 만든다. 여기서 기존 a가 다 연속이면 되기 때문에
|
|
a의 개수 k를 구해서 원형에서 k구간씩 확인하며 b를 다 빼주면 되는데, 이때 b개수의 최소값이 답이다.
|
|
""" |