컴퓨터과학/알고리즘_PS

[백준] 20365 - 블로그2

MG# 2022. 4. 25. 11:51

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

 

20365번: 블로그2

neighbor 블로그를 운영하는 일우는 매일 아침 풀고 싶은 문제를 미리 정해놓고 글을 올린다. 그리고 매일 밤 각각의 문제에 대하여, 해결한 경우 파란색, 해결하지 못한 경우 빨간색으로 칠한

www.acmicpc.net

 

한 번에 B 또는 R 을 쭉 칠하고 나머지 색을 중간중간 칠하면 최소가 됩니다. 하지만 그 최소를 B, R 둘 다 해보아야 알기 때문에 연속되지 않은 B, R 수를 세고 둘 중 최소를 구해주면 됩니다.

 

#include <iostream>
using namespace std;

int n, b, r;
string s;

int main() {

    ios::sync_with_stdio(0);
    cin.tie(0);

    cin >> n >> s;

    char c = s[0];
    if (c == 'B')
        b++;
    else
        r++;

    for (int i = 1; i < n; i++) {
        if (c == 'B') {
            if (c != s[i]) {
                r++;
                c = s[i];
            }
        } else {
            if (c != s[i]) {
                b++;
                c = s[i];
            }
        }
    }

    int ans = min(b + 1, r + 1);
    cout << ans << "\n";

    return 0;
}