문제풀이/기타

[파이썬] [슬라이딩] 백준 1522 문자열 교환

승무_ 2023. 3. 16. 16:09

문제

https://www.acmicpc.net/problem/1522

 

1522번: 문자열 교환

a와 b로만 이루어진 문자열이 주어질 때,  a를 모두 연속으로 만들기 위해서 필요한 교환의 회수를 최소로 하는 프로그램을 작성하시오. 이 문자열은 원형이기 때문에, 처음과 끝은 서로 인접해

www.acmicpc.net

코드

import sys
result=sys.maxsize

s=input()

if s=='b':
    print(0)
    exit(0)

countB=s.count('b')
tempB=s[:countB].count('b')

result=min(result, countB-tempB)
for i in range(1,len(s)):
    if s[i-1]=='b':
        tempB-=1
    if s[(i+countB-1)%len(s)]=='b':
        tempB+=1
    result=min(result, countB-tempB)

print(result)

시간 복잡도

O(문자열의 길이)