クルトンのプログラミング教室

Pythonの使い方やPythonを使った競技プログラミングの解法などを解説しています。

Pythonで解くAtCoder(ABC175:A)

こんにちは、クルトンです!
この記事では

AtCoderの「AtCoder Beginner Contest 175」のA問題をPythonを使って解説します。

問題のリンクを載せておきます。

atcoder.jp

今回必要な知識

  • input関数
  • if文, elif文, else文
  • print関数

input関数、if, elif文, else文、input関数の使い方は以下の記事で解説しています。

kuruton.hatenablog.com

kuruton.hatenablog.com

kuruton.hatenablog.com


数値の入力

まずinput関数を使って入力を受け取ります。

X = input()

ではここからは解法について説明します。

解法

まず、すべてのパターンを場合分けする方法を思いつくと思います。

しかし、この方法だと

S = 'RRR', 'RRS', 'RSR', 'RSS', 'SRR', 'SRS', 'SSR', 'SSS'

の8つの場合分けが必要になります。

これは少し多いので別の場合分けを考えてみましょう。


S = |3|であることに注目すると、答えは0, 1, 2, 3のいずれかであることが分かります。

よって,この4つで場合分けを行えばよいことが分かります。


この場合分けは、「'RRR'が含まれるときは答えが3になり、'RRR'が含まれず 'RR'が含まれるときは答えは2になり、'RRR', 'RR'が含まれず'R'が含まれるときは答えが1になり、そうでないときは答えが0になる」ということを使うことで簡単に実装できます。



まず、'RRR'が含まれれば答えは3になるので

if 'RRR' in S:
    print(3)

となります。


次に、答えが2のときについてですが、'RRR'が含まれる場合はもうすでに処理されているので考える必要がありません。

よって'RR'が含まれるかどうかのみ調べればよく

if 'RRR' in S:
    print(3)
elif 'RR' in S:
    print(2)

となります。

答えが1の場合も同様にして

if 'RRR' in S:
    print(3)
elif 'RR' in S:
    print(2)
elif 'R' in S:
    print(1)

となります。

残っているのは答えが0のときのみなので、else文を使って

if 'RRR' in S:
    print(3)
elif 'RR' in S:
    print(2)
elif 'R' in S:
    print(1)
else:
    print(0)

が答えとなります。

以下にサンプルコードを載せておきます

atcoder.jp

まとめ

今回は

  • if文, elif文, else文
  • 場合分けの数を減らす

という問題でした。

この問題はいろいろな解き方があるので、余力のある方は他の解き方も考えてみるとよいでしょう!

ではまたお会いしましょう!さようなら~