ABC118 B - Foods Loved by Everyone

備忘録

問題

atcoder.jp

回答

import sys
import os


def main():
    if os.getenv("LOCAL"):
        sys.stdin = open("input.txt", "r")

    N, M = list(map(int, sys.stdin.readline().split()))
    FOODS = set(range(1, M + 1))

    for n in range(N):
        K, *A = list(map(int, sys.stdin.readline().split()))
        FOODS &= set(A)

    print(len(FOODS))


if __name__ == '__main__':
    main()

考え方

初めに食べ物の配列(FOODS)を作り、
N人の人が答えた回答(A)と共通する要素のみを残す。

複数の配列から共通の要素のみを残すのは理論和(&)を使用することで簡単にできる。
参考:Pythonで複数のリストに共通する・しない要素とその個数を取得 | note.nkmk.me

最後に残った要素の数を出力するだけ。