https://www.acmicpc.net/problem/17615
17615번: 볼 모으기
첫 번째 줄에는 볼의 총 개수 N이 주어진다. (1 ≤ N ≤ 500,000) 다음 줄에는 볼의 색깔을 나타내는 문자 R(빨간색 볼) 또는 B(파란색 볼)가 공백 없이 주어진다. 문자열에는 R 또는 B 중 한 종류만 주
www.acmicpc.net
생각해보기
- 공은 왼쪽 혹은 오른쪽으로 몰 수 있다.
- 오른쪽으로 한번 왼쪽으로 한번 진행하며 확인하자.
코드
#include<iostream>
#include<string>
using namespace std;
int N;
string balls;
void input(){
cin>>N>>balls;
}
void solution(){
bool rf = false, bf = false;
int rc = 0, bc = 0;
int ans = 987'654'321;
for(int i=0;i<N;++i){
if(balls[i] == 'R')
bf = true;
else
rf = true;
if(bf && balls[i] == 'B')
++bc;
if(rf && balls[i] == 'R')
++rc;
}
ans = min(rc,bc);
rf = false;
bf = false;
rc = 0, bc = 0;
for(int i=N-1;i>=0;--i){
if(balls[i] == 'R')
bf = true;
else
rf = true;
if(bf && balls[i] == 'B')
++bc;
if(rf && balls[i] == 'R')
++rc;
}
ans = min(ans, min(rc, bc));
cout<<ans<<'\n';
}
int main(){
ios_base::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
input();
solution();
return 0;
}

728x90
'알고리즘 > 백준 문제' 카테고리의 다른 글
| 14719 - 빗물 (0) | 2023.07.25 |
|---|---|
| 20437 - 문자열 게임 2 (0) | 2023.07.24 |
| 24337 - 가희와 탑 (0) | 2023.07.22 |
| 2531 - 회전 초밥 (0) | 2023.07.22 |
| 22866 - 탑 보기 (0) | 2023.07.21 |
댓글