관찰이 필요한 문제
모든 경우에서 볼들을 이동시킨 결과는 [빨강, 파랑] 또는 [파랑 빨강]이 나오게 된다.
따라서, 끝 점의 볼들을 센 다음, 가장 많은 종류의 볼들이 모인 곳을 기준으로 다른 볼들을 움직여야 한다.
이제 4가지 경우에 걸쳐 끝점의 볼을 기준으로 같은 종류의 볼을 모은다.
즉, 맨 왼쪽이 빨간색이라면, 다른 위치에 있는 빨간 볼을 모두 왼쪽으로 모은다.
4가지 경우는 다음과 같다.
1. 맨 왼쪽이 빨간 볼인 경우.
2. 맨 왼쪽이 파란 볼인 경우
3. 맨 오른쪽이 빨간 볼인 경우
4. 맨 오른쪽이 파란 볼인 경우
위 4가지 경우를 통해 움직여진 볼의 개수의 최소값이 답이다.
더보기
N = int(input())
redC, blueC = 0, 0
S = input()
for s in S:
if s == 'R':
redC += 1
else:
blueC += 1
temp = [redC, blueC]
if S[0] == 'R':
temp.append(redC - len(S.split("B")[0]))
if S[0] == 'B':
temp.append(blueC - len(S.split("R")[0]))
if S[-1] == 'R':
temp.append(redC - len(S.split("B")[-1]))
if S[-1] == 'B':
temp.append(blueC - len(S.split("R")[-1]))
print(min(temp))
'알고리즘 > 백준' 카테고리의 다른 글
백준[13904] 과제 (Python3) (0) | 2022.11.05 |
---|---|
백준[2513] 통학버스 (Python3) (0) | 2022.11.05 |
백준[1092] 배 (Python3) (0) | 2022.11.05 |
백준[17616] 등수 찾기 (Python3) (0) | 2022.11.05 |
백준[15973] 두 박스 (Python3) (0) | 2022.11.05 |