けんちょんの競プロ精進記録

競プロの精進記録や小ネタを書いていきます

AtCoder ABC 175 A - Rainy Season (灰色, 100 点)

ちょっと難しい問題。

問題概要

3 文字の 'R' と 'S' のみからなる文字列  S が与えられる。

 S において、'R' が最大で何個連続しているかを答えよ。

解法

ありうる文字列は  2^{3} = 8 通りあることに注意しよう。よって、すべての文字列を調べることができる。そうすると、次のようになる。

3 個連続

"RRR" のみ

2 個連続

"RRS" と "SRR"

1 個連続

"RSS" と "SRS" と "SSR" が考えられる。

これだけかと思いきや、実は "RSR" も「1 個連続である」。これに気づけたかどうか!!!

0 個連続

"SSS" のみ

まとめ

上記に基づいて、if 文を用いて答えればよい。1 個の場合を最後の else 文に押し付けると楽できる。

#include <bits/stdc++.h>
using namespace std;

int main() {
    string S;
    cin >> S;
    
    if (S == "RRR")
        cout << 3 << endl;
    else if (S == "RRS" || S == "SRR")
        cout << 2 << endl;
    else if (S == "SSS")
        cout << 0 << endl;
    else
        cout << 1 << endl;
}