
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)) #두가지 가정 중 가장 작은 값
'Algorithm' 카테고리의 다른 글
백준 알고리즘 파이썬(Python) 19941번 햄버거분배 (0) | 2021.06.03 |
---|---|
백준 알고리즘 파이썬(Python) 2847번 게임을 만든 동준이 (0) | 2021.06.02 |
백준 알고리즘 파이썬(Python) 20300번 서강근육맨 (0) | 2021.05.27 |
백준 알고리즘 파이썬(Python) 20115번 에너지드링크 (0) | 2021.05.14 |
백준 알고리즘 파이썬(Python) 11508번 2+1 세일 (0) | 2021.05.14 |