先頭に ! を0文字か1文字付加した文字列がN個与えられたとき、「不満な文字列」があるかどうか判定し、あれば1つ示す問題です。
提出
n = int(input())
a = []
b = []
for i in range(n):
s = input()
if s[0]=="!":
b.append(s[1:])
else:
a.append(s)
f = list(set(a) & set(b))
if f:
print(f[0])
else:
print("satisfiable")
まず、N個の文字列を「 ! がある文字列」と「 ! がない文字列」の2つに分類します。
「 ! がある文字列」は「!」を抜いた文字列をリストbに加え、「 ! がない文字列」はリストaに加えます。
そのあとに、「set(a)&set(b)」で両方に入っている文字列を取得します。
もし、両方に同じ文字列があれば、fにリストとして入っているので、(どれを出力してもいいので)f[0]を出力します。
fに何もない場合は、「satisfiable」を出力します。