LoginSignup
22
28

【Python】リストの中に特定の要素があるか判定する処理はsetを使え

Last updated at Posted at 2024-03-09

某競技プログラミングコンテストにて、要素群の中に特定の要素が入っているかを判定する処理を実装しなければならない問題がありました。

この問題では、なにも工夫せずリストで実装すると指定された実行時間以内にプログラムが終了しません。

リストを使う方法(イメージ)

A=[1,2,3,4,5,6,7,8,9,10]
if 5 in A:
    print("YES")

このように実装して、要素が少ない時は問題にはならないですが、要素がとても多いときは実行時間が長くなり、競技プログラミングのコンテストではタイムオーバーになってしまう。ちなみに計算量はO(n)。

では、どうしたら良いのか。
リストを使うのではなく、set型を使えば高速化できる!

setを使う方法

A={1,2,3,4,5,6,7,8,9,10}
if 5 in A:
    print("YES")

このようにするだけで劇的に速くなるそうです。計算量はO(1)に。

setの使い方は以下のページ
https://docs.python.org/ja/3/library/stdtypes.html#set

参考

22
28
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
22
28