【ABC166 B】「Trick or Treat」を解く【Python3】

「AtCoder」解説一覧へ

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(オブジェクト)

【ABC166】解説記事リスト

「AtCoder」解説一覧に戻る

コメントを残す

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