備忘録

徒然なるままに。

ABC085B

自分のコード

N = int(input())
A = []
for _ in range(N):
    A.append(int(input()))
    
print(len(set(A)))

リストから重複した要素を取り除き、取り除いた後のオブジェクトの長さを表示させるもの。
この問題に関してはいろいろ眺めてもこれが最適かと。実行時間21ms、直近だと一番早そう(誤差の範囲だとは思うけど)。
可読性を考えればA_setを導入するとか出来るか。とは言えこれで十分だと思う。
setを使わないときは並べ替えたうえで前後同士値を比較して重複要素を取り除いたり…うーん、どう考えてもsetで良さそう。

しかしキチンとPythonの操作を主体にコードがパッと思いついたのでそこはよかった。プログラミング思考に少しずつ慣れてきた。

ちなみにsetだと適用後のオブジェクトは適用前から重複要素が削除されるだけじゃなく並びも変わるので注意が必要か。
これを回避し並びを保持するには

dict.fromkeys(arr)

が使えるらしい。辞書型は重複する要素を持ちえないことを使っている。なるほど。