AtCoder ABC 166 B – Trick or Treat Python解説

スポンサーリンク

Trick or Treat

ある街に、N 人のすぬけ君(すぬけ君 1 、すぬけ君 2 、 …、 すぬけ君 N )が住んでいます。
この街には、 K 種類のお菓子(お菓子 1 、 お菓子 2 、….、お菓子 K )が売られています。お菓子 i を持っているのは、すぬけ君 Ai,1​,Ai,2​,⋯,Ai,di​​ の計 di 人です。
高橋君は今からこの街を回り、お菓子を 1 つも持っていないすぬけ君にいたずらをします。このとき、何人のすぬけ君がいたずらを受けるでしょうか。

AtCoder Beginner Contest 「Trick or Treat」

入力から、お菓子iを持っているすぬけ君の番号が与えられるので、お菓子を1つも持っていないすぬけ君の人数は、N人のすぬけ君 – お菓子を持っているすぬけ君の人数で計算できます。

n, k = map(int, input().split())

b = set()

for _ in range(k):
    d = int(input())
    a = list(map(int, input().split()))
    b.update(a)
    
print(n - len(b))

お菓子を持っているすぬけ君の番号が重複する可能性があるのでset関数を使いましょう。
for文のa = list(map(int, input().split()))でお菓子iを持っているすぬけ君の番号を受け取ったら、次のb.update(a)で配列ごとset型の配列に入れます。

最後にN人のすぬけ君の人数から配列bの要素数を引いて答えを求めます。

AtCoderB問題

Posted by cheese