*문제 출처는 백준에 있습니다.
문제 제목: 문자열 교환 / 1522번 (실버 1단계)
문제 사이트: https://www.acmicpc.net/problem/1522
문제 설명
나의 풀이
S = input()
def min_a(word):
# 처음 a의 개수
total_a = word.count('a')
# 원형이라고 했으니깐 두 문자열을 붙여준다.
ac = word + word
# 원형 문자열에서 a의 개수를 검사
current_a = ac[:total_a].count('a')
max_a = current_a # a가 가장 많을 때랑 비교할 변수다
for i in range(1, len(word)):
if ac[i - 1] == 'a':
current_a -= 1
if ac[total_a + i - 1] == 'a':
current_a += 1
max_a = max(max_a, current_a)
# a가 최대가 되면 최소화된 b의 개수만 남는다
return total_a - max_a
print(min_a(S))
※ 알아야 할 것
리스트 슬라이싱(리스트 부분을 잘라서 사용하는 풀이)을 잘 숙지하고 있으면 쉽게 풀 수 있는 문제다.
'코딩테스트(프로그래머스 & 백준) > 백준-Python' 카테고리의 다른 글
백준 / 효율적인 해킹 / 1325번 / Python (1) | 2024.07.10 |
---|---|
백준 / DFS와 BFS / 1260번 / Python (0) | 2024.06.24 |
백준 / 국회의원 선거 / 1417번 / Python (1) | 2024.06.06 |
백준 / 방 번호 / 1475번 / Python (0) | 2024.06.04 |
백준 / 다리 놓기 / 1010번 / Python (0) | 2024.06.03 |