[백준] #1522 문자열 교환 python

2023. 3. 28. 20:30

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

 

1522번: 문자열 교환

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

www.acmicpc.net

 

📕 설명 📕

 

문자열의 형태를 왼쪽에서부터 생각하여 풀이하였다.

 

원형의 형태이므로 posit을 왼쪽부터로 생각하여, 만약 오른쪽에 인덱스가 S의 길이를 넘어가면 다시 원형임을 고려하여 처음부터 대입하였다.

 

 

🧑🏻‍💻 나의 풀이 🧑🏻‍💻

import math

S = list(input())
a_count = S.count('a')
result = math.inf
posit = 0

while posit < len(S):
  right = posit + a_count
  if right > len(S):
    temp = S[posit:len(S)] + S[:right-len(S)]
  else:
    temp = S[posit:right]
  result = min(result, temp.count('b'))
  posit += 1
print(result)

BELATED ARTICLES

more