AtCoder Beginner Contest 296の解説記事です。
目次
ABC296 A – Alternately
問題
問題文の要約は以下の通りです。
問題の要約
MおよびFからなる長さ \(N\) の文字列 \(S\) がMとFが交互に並んでいるか判定せよ。
制約
・\(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
同じ文字が連続しているかどうかを文字列を含むかで判定する。
解説
MとFが交互に並んでいるということはMMとFFを含まないことと同じことである。
含まないことは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')
