본문 바로가기

코딩테스트/Python

[Python] 백준 #17615 - 볼 모으기

문제


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

 

17615번: 볼 모으기

첫 번째 줄에는 볼의 총 개수 N이 주어진다. (1 ≤ N ≤ 500,000) 다음 줄에는 볼의 색깔을 나타내는 문자 R(빨간색 볼) 또는 B(파란색 볼)가 공백 없이 주어진다. 문자열에는 R 또는 B 중 한 종류만 주

www.acmicpc.net

 

 

 

풀이


n = int(input())
s = input()
r = s.split('R')
b = s.split('B')

print(min(len(''.join(r[:-1])),len(''.join(r[1:])),len(''.join(b[:-1])),len(''.join(b[1:]))))

 

문자열을 R과 B를 기준으로 나눠준 후 (split),

길이를 구하는 식으로 풀었다.

 

1. 먼저 R과 B로 나눈 모습이다.

R과 B로 나눈 모습

2. 공의 이동 횟수는 문자열의 길이로 구한다.

2-1. R로 나누었을때 : B를 뒤로 보냄, B를 앞으로 보냄

2-2. B로 나누었을때 : R를 뒤로 보냄, R를 앞으로 보냄

 

3. 뒤로 보낼때는 가장 마지막 문자열을 제외한 길이를 구해주고,

앞으로 보낼때는 가장 처음 문자열을 제외한 길이를 구해준다.

 

 

백준 숏코딩 4등에 등재되었다..!!!!! 대박 ㅠㅠㅠ 풀었는데 신박하게 푼거같아서 숏코딩 들어가봤더니 4등,,!!!! 감격스럽다..