N人のすぬけ君のうち、お菓子を1つも持っておらず、いたずらを受けてしまうすぬけ君が何人いるか答える問題です。
提出
n, k = map(int, input().split())
a = []
for i in range(k):
d = int(input())
ai = list(map(int, input().split()))
a = a + ai
print(n-len(set(a)))
「お菓子を持っていないすぬけ君の人数」は
「(すぬけ君N人)ー(お菓子を持っているすぬけ君の人数)」
で求めることができます。
空リストを事前に作成しておき、お菓子を持っているすぬけくん「di,Ai」の入力をリストで受け取ります。
リストの重複は後で削除すると考え、リスト後ろに、お菓子iを持っているすぬけ君を全員加えます。
k種類のお菓子すべて処理し終えた後に、set()で重複を削除し、len()で要素数を取得します。
最後に人数nから引けば「お菓子を持っていないすぬけ君の人数」になります。
split()メソッド
split()メソッドは、区切り文字を指定して、文字列を分割します。
区切り文字を指定しない場合、空白、タブ、改行で分割されます。
str.split("区切り文字")
map()関数
map()関数は、イテラブル(リストやタプルなど)の各要素に関数の処理を適用します。
map(関数、イテラブル)
set()
set型は、集合を扱うための型です。
リスト型と異なり、重複した要素がなく、要素に順番がありません。
set()の引数にリストやタプルを指定することで、重複する要素が除外されたset型オブジェクトが生成されます。
set(オブジェクト)