【ABC187 C】「1-SAT」を解く【Python3】

「AtCoder」解説一覧へ

先頭に ! を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」を出力します。

【ABC187】解説記事リスト

「AtCoder」解説一覧に戻る

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です