【AtCoder】ABC296解説(Python)

AtCoder Beginner Contest 296の解説記事です。

目次

ABC296 A – Alternately

問題

問題文の要約は以下の通りです。

問題の要約

MおよびFからなる長さ \(N\) の文字列 \(S\) がMFが交互に並んでいるか判定せよ。

制約

・\(1 \le N \le 100\)
・\(N\) は整数
・\(S\) はMおよびFのみからなる長さ \(N\) の文字列

入力

\(N\)
\(S\)

出力

 条件を満たす場合はYes、満たさない場合はNo と出力せよ。

解説1

同じ文字が連続しているかどうかをfor文で判定する。

解説

前から順に同じ文字が連続しているかどうか判定する。
i文字目とi+1文字目が同じかどうかはS[i]==S[i+1]と書けば判定できます。

解答

# 入力
N = int(input())
S = input()

# 同じ文字が連続しているか?
for i in range(N-1):
    if S[i]==S[i+1]:
        print('No')
        exit()
print('Yes')

解説2

同じ文字が連続しているかどうかを文字列を含むかで判定する。

解説

MFが交互に並んでいるということはMMFFを含まないことと同じことである。

含まないことはnot in Sで書けるので、'MM' not in Sかつ 'FF' not in Sで判定できます。

解答

# 入力
N = int(input())
S = input()

# 同じ文字が連続して並んでいないか?
if 'MM' not in S and 'FF' not in S:
  print('Yes')
else:
  print('No')
よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次