Algorithm
백준 알고리즘 파이썬(Python) 20365번 블로그2
🤖 Play with Android 🤖
2021. 6. 1. 01:11
728x90
이 문제의 핵심은 cnt 즉 카운트 값을 2개 지정한다는 것이다.
카운트 값을 2개 지정하는 이유는 내가 가장 먼저 파란색으로 다 칠할지, 빨간색으로 다 칠할지를 구분해서 카운트를 세주는 것이다. 그 뒤에 연속해서 다른색이 나오는 경우만 조심해서 풀어주면 된다.
n = int(input())
arr = list(input())
arr.append('A') # line 12와 line 21의 arr[i+1] 에서 list의 범위를 벗어나는 오류를 해결하기 위한 방법
cnt = [1] * 2 #파란색을 먼저 칠할 경우와 빨간색을 먼저 칠할 경우의 수를 다 파악하기 위해 cnt를 2개 지정
for i in range(n): #먼저 다 파란색으로 칠했다고 가정한 경우
if arr[i] == 'B':
continue
elif arr[i] == 'R':
cnt[0] += 1
if arr[i+1] == 'R':
cnt[0] -= 1
continue
for i in range(n): #먼저 다 빨간색으로 칠했다고 가정한 경우
if arr[i] == 'R':
continue
elif arr[i] == 'B':
cnt[1] += 1
if arr[i+1] == 'B':
cnt[1] -= 1
continue
print(min(cnt)) #두가지 가정 중 가장 작은 값