문제
https://www.acmicpc.net/problem/17615
접근방법
단순 계산으로 접근했다.
파랑색, 빨강색 볼 개수를 각각 세고 가장자리에 있는 파랑색, 빨강색 볼 개수를 빼줬다.
가장자리에 있는 볼들은 움직이지 않아도 되는 볼들이다.
움직여야 할 볼이 적은 색을 선택해 그 숫자를 세면 된다.
코드
#include <iostream>
#include <vector>
using namespace std;
int main() {
int n;
cin >> n;
vector<char> arr(n);
int cnt_r = 0;
int cnt_b = 0;
for (int i=0;i<n;i++) {
cin >> arr[i];
if (arr[i] == 'R') cnt_r++;
else if (arr[i] == 'B') cnt_b++;
}
int i = 0;
int left_r = 0;
int left_b = 0;
while (arr[i++] == arr[0]) {
if (arr[0] == 'R') left_r++;
if (arr[0] == 'B') left_b++;
}
int min_changed = min(cnt_r - left_r, cnt_b - left_b);
int right_r = 0;
int right_b = 0;
i = n-1;
while (arr[i--] == arr[n-1]) {
if (arr[n-1] == 'R') right_r++;
if (arr[n-1] == 'B') right_b++;
}
int temp = min(cnt_r - right_r, cnt_b - right_b);
min_changed = min(temp, min_changed);
cout << min_changed << endl;
return 0;
}
개선할 점
...
'코딩테스트 준비 > 백준' 카테고리의 다른 글
[백준 14719] - 빗물 c++ (1) | 2024.02.13 |
---|---|
[백준 2531] - 회전 초밥 c++ (2) | 2024.02.13 |
[백준 20922] - 곂치는 건 싫어 c++ (1) | 2024.02.13 |
[백준 14940] - 쉬운 최단거리 c++ (1) | 2024.02.13 |
[백준 9017] - 크로스 컨트리 c++ (1) | 2024.02.11 |