[백준] 1522 - 문자열 교환 / Python / 실버 1

KimYoungWoong·2022년 12월 27일
0

BOJ

목록 보기
20/31
post-thumbnail

🚩문제 주소


📄풀이

슬라이딩 윈도우

이 문제의 핵심은 입력 받은 문자열 중에서 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)

profile
블로그 이전했습니다!! https://highero.tistory.com

0개의 댓글