문제 링크: https://www.acmicpc.net/problem/17615
17615번: 볼 모으기
첫 번째 줄에는 볼의 총 개수 N이 주어진다. (1 ≤ N ≤ 500,000) 다음 줄에는 볼의 색깔을 나타내는 문자 R(빨간색 볼) 또는 B(파란색 볼)가 공백 없이 주어진다. 문자열에는 R 또는 B 중 한 종류만 주
www.acmicpc.net
이거 문제 못풀었다 .. ; 다른 코드 찾아보면서 놀랬다.. 너무 간단해서... 이렇게 푼 사람 천잰가...?
Key Point
- 한 번에 답을 찾는게 아니라, 빨간 공을 왼쪽, 오른쪽으로 몰았을 때 / 파란 공을 왼쪽, 오른쪽으로 몰았을 때
이렇게 네 가지 경우의 수를 구한 다음에 min 값을 return 하는 것
- 그럼 각각의 움직이는 횟수는 어떻게 세느냐?
빨간 공을 오른쪽으로 몰았을 때: R이 오른쪽 맨 끝에 있다면, 어차피 그쪽으로 모을 것이기 때문에 count X --> 그 다음 R공의 개수 count (어차피 하나씩 옮겨야 하는 것이 룰이기 때문에)
이거를 네 가지 경우에 수에 대해 구해주면 된다.

N = int(input())
balls = input()
cnt = []
red_right = balls.rstrip('R').count('R') # 빨간색 공 오른쪽으로 모으기
red_left = balls.lstrip('R').count('R') # 빨간색 공 왼쪽으로 모으기
blue_right = balls.rstrip('B').count('B') # 파란색 공 오른쪽으로 모으기
blue_left = balls.lstrip('B').count('B') # 파란색 공 왼쪽으로 모으기
print(min(red_right, red_left, blue_right, blue_left))
'1일 1솔' 카테고리의 다른 글
| [백준] 16206: 롤케이크 (Python, 파이썬) (0) | 2023.09.27 |
|---|---|
| [백준] 1141번: 접두사 (Python, 파이썬) (0) | 2023.09.27 |
| [백준] 4889번: 안정적인 문자열 (0) | 2023.09.22 |
| [백준] 9009번: 피보나치 (Python, 파이썬) (0) | 2023.09.21 |
| [백준] 1105번: 팔 (Python, 파이썬) (0) | 2023.09.21 |