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')