AtCoder ABC 141 B – Tap Dance Python解説
Tap Dance
高橋君はタップダンスをすることにしました。タップダンスの動きは文字列 S で表され、S の各文字は
AtCoder Beginner Contest 「Tap Dance」L
,R
,U
,D
のいずれかです。各文字は足を置く位置を表しており、1 文字目から順番に踏んでいきます。
S が以下の 2 条件を満たすとき、またその時に限り、S を「踏みやすい」文字列といいます。
奇数文字目がすべてR
,U
,D
のいずれか。
偶数文字目がすべてL
,U
,D
のいずれか。
S が「踏みやすい」文字列ならYes
を、そうでなければNo
を出力してください。
文字列Sの文字をひとつずつ確認していき、奇数番目、偶数番目が共に条件を満たしているか判定します。
s = input()
a = ["R", "U", "D"]
b = ["L", "U", "D"]
for i in range(len(s)):
if i % 2 == 0:
if s[i] not in a:
print("No")
break
else:
if s[i] not in b:
print("No")
break
else:
print("Yes")
先述した通り、奇数番目、偶数番目が共に条件を満たしているか判定します。
文字列Sの1文字目はデータ上では0番目になるので注意しましょう。
s = input()
if not "L" in s[::2] and not "R" in s[1::2]:
print("Yes")
else:
print("No")
他の書き方。今回の問題ではL,R,U,Dのうち、LとRの出現位置だけ注意すればよいので、UとDは無視しても大丈夫です。スライスを使って文字列の奇数番目と偶数番目を取得しています。
s = input()
print("Yes" if not "L" in s[::2] and not "R" in s[1::2] else "No")
三項演算子を使い、さらにコードを短くした例。