[실버1] 17615번 : 볼 모으기

Quesuemon·2022년 8월 25일
0

코딩테스트 준비

목록 보기
107/111

🛠 문제

https://www.acmicpc.net/problem/17615


👩🏻‍💻 해결 방법

1) R, B 중 더 작은 개수의 공
2) 공을 왼쪽으로 옮기는 경우(왼쪽부터 연속된 색상의 개수를 세어서 해당 색상의 전체 개수에서 연속된 개수를 빼준다)
3) 공을 오른쪽으로 옮기는 경우(오른쪽부터 연속된 색상의 개수를 세어서 해당 색상의 전체 개수에서 연속된 개수를 빼준다)

세가지 경우를 모두 구현하면서 최소값을 갱신한다


소스 코드

n = int(input())
arr = list(input())

red = arr.count('R')
blue = n - red
answer = min(red, blue)  #R, B 중 더 작은 개수

cnt = 0
for i in range(n):  # 왼쪽으로 이동하는 경우
  if arr[i] != arr[0]: break
  cnt += 1

if arr[0] == 'R':
  answer = min(answer, red-cnt)
else:
  answer = min(answer, blue-cnt)

cnt = 0
for i in range(n-1, -1, -1):  # 오른쪽으로 이동하는 경우
  if arr[i] != arr[n-1]: break
  cnt += 1

if arr[n-1] == 'R':
  answer = min(answer, red-cnt)
else:
  answer = min(answer, blue-cnt)

print(answer)

0개의 댓글

관련 채용 정보