この記事で使うアルゴリズム
全探索
はじめに
カテゴリー競プロ初中級者100問では、Qiitaにて@e869120さんがレッドコーダーが教える、競プロ・AtCoder上達のガイドライン【中級編:目指せ水色コーダー!】としてまとめられている100問をPythonで解いています。
全問題の一覧はこちらです
問題
https://atcoder.jp/contests/sumitrust2019/tasks/sumitb2019_d
この問題は全探索を用いて解くことができます。
方針
存在しうる暗証番号をK通りとして、全探索の計算量はO(NK)です。この問題では、暗証番号は3桁すなわちK=1000ですので、全探索でも十分間に合います。
コード
全探索
Pythonの場合だと実装によってはTLEとなるため、PyPyを用います。
1 | from itertools import product |
別解 計算量O(N)の解法
ハッシュテーブル(setなど)を使い、prefixを保存していくことで効率よく数え上げができます。
1 | N = int(input()) |
記事情報
- 投稿日:2020年5月16日
- 最終更新日:2020年5月16日