AtCoder ABC 226 B – Counting Arrays Python解説

Counting Arrays

1 から N までの番号がついた N 個の数列が与えられます。
数列 i は、長さが Liで j (1≤j≤Li) 番目の要素が ai,jであるような数列です。
数列 i と 数列 j は、 Li=Ljかつすべての k (1≤k≤Li) に対して ai,k=aj,kが成り立つ時に同じであるとみなします。
同じ数列は 1 種類として数えるとき、数列 1 から 数列 N の中に全部で何種類の数列がありますか?

AtCoder Beginner Contest「Counting Arrays」

同じ数列は1種類と数えるとき、全部で何種類の数列があるか?という問題です。
与えられる入力から数列を受け取り、重複していない数列をカウントしていけばよいのですが、この問題は制限時間に引っ掛かりやすいので注意が必要です。

n = int(input())

a = set()

for _ in range(n):
    a.add(input())
        
print(len(a))

先述した通り、この問題はTLEになりやすいので、重複した数列の処理はset関数を使ったほうがよいです。set関数を宣言して、数列を受け取っていきます。最後にlen関数で数列の要素数を数えて完了です。