▼考え方
この問題を解くために私が考えた内容1.~2.2.を以下に示します。
1.放送したい単語Vを1つずつインプットし、題意に基づいた検閲処理を行います。
2.1.放送したい単語Vの前半分の検閲処理を行います。変数v1を用いたV[:v1]は、放送したい単語Vの前半分を示します。V[v1:]は前半分以外の残りを示します。変数s1を用いたS[:s1]は、放送禁止単語Sの前半分を示します。
2.2.放送したい単語Vの後ろ半分の検閲処理を行います。変数v2を用いたV[v2:]は、放送したい単語Vの後ろ半分を示します。V[:v2]は後ろ半分以外の残りを示します。変数s2を用いたS[s2:]は、放送禁止単語Sの後ろ半分を示します。
▼コード
########## 処理0(準備) モジュールインポート,インプット ###########
import math
N = int(input())
S = input()
########## 処理1 放送したい単語Vの検閲処理、出力 ###########
for i in range(N):
# 考え方1.
V = input()
if V == S:
print("banned")
elif len(V) != len(S):
print(V)
else:
# 考え方2.
v1 = math.ceil(len(V)/2)
s1 = math.ceil(len(S)/2)
v2 = math.floor(len(V)/2)
s2 = math.floor(len(S)/2)
# 考え方2.1.
if V[:v1] == S[:s1]:
V = len(V[:v1])*"x" + V[v1:]
# 考え方2.2.
elif V[v2:] == S[s2:]:
V = V[:v2] + len(V[v2:])*"x"
print(V)