AtCoder ABC 023 B – 手芸王 Python解説
手芸王
今回の問題はこちらからどうぞ「手芸王」。
文字列Sが与えられ、その文字列がアクセサリーの名前として考えられるかを判定し、考えられるなら何番目の手順の直後にアクセサリーの作成を終了したのかを求める。
アクセサリーは初期状態でb、手順1で左にa、右にcを加え、手順2で左にc、右にa、
手順3で両端にb、を繰り返すのでこれらの手順をループで回した結果と、与えられた文字列Sと比べてみます。
n = int(input()) // 2
s = input()
ans = "b"
for i in range(1, n + 1):
if i % 3 == 0:
ans = "b" + ans + "b"
elif i % 3 == 1:
ans = "a" + ans + "c"
elif i % 3 == 2:
ans = "c" + ans + "a"
if ans == s:
print(n)
else:
print(-1)
アクセサリーは2個ずつ増えるので、与えられる文字列数Nは2で割っています。
ansに初期状態のbを入れ、for文は手順1から回しています。手順は1から3でループするのでiを3で割った余りで条件文を書いています。
最後にif文でansとsを比較して完了。