素朴なアプローチとしては、入力された要素をリストに読み込み、1 から n までの数字をすべてチェックし、その数字がリストに含まれていなければ答えとする、という方法が挙げられます。たとえば次のようなイメージです:
n = int(input())
a = [int(ai) for ai in input().split()]
for i in range(1, n + 1): # n 回の操作
if i not in a: # n 回の操作(全ての要素を走査)
print(i) # 解答が見つかりました!
このアルゴリズムは非常に遅く、1 から n までのすべての数をチェックし、さらにそのたびにリスト全体をなめて「含まれているかどうか」を確認しているため、要素数が n に近いリスト検索が n 回繰り返されます。リスト内に特定の要素があるかどうかを確認するには、線形時間、つまりリストの要素を一つずつ調べる必要があるため、最終的にはおよそ 回の操作が行われることになるのです。
この問題では n が最大で10万まであり、アルゴリズムは最大で 、つまり100億回の操作を行うことになります。一般的なコンピュータでは約100秒かかる計算量なので、制限時間が1秒という条件では到底間に合いません。したがって、もっと効率的な解決策が必要になります。
Big Notation
ビッグオー記法(Big O notation)は、入力サイズが大きくなるにつれてアルゴリズムの実行に必要な時間や操作回数がどのように増加するか、その上限を示す数学的記法です。アルゴリズムが入力のサイズに対してどれほど多くの処理を行うのか、おおまかな目安を示してくれます。