AtCoder ABC 205 B – Permutation Check Python解説

スポンサーリンク

Permutation Check

1 以上 N 以下の整数からなる長さ N の数列 A=(A1,A2,…,AN) が与えられます。
A が (1,2,…,N) の並び替えによって得られるかどうか判定してください。

AtCoder Beginner Contest 「Permutation Check」

A(A1, A2, …AN)が(1, 2, …N)の並び替えによって得られるかどうかという問題です。
方針としては、Aを昇順でソートし、1, 2, …Nと同じ値になっているか判定をしていきます。

n = int(input())
a = list(map(int, input().split()))

flag = True
a = sorted(a)

for i in range(1, n+1):
    if a[i-1] != i:
        flag = False
        
print("Yes" if flag else "No")

数列Aを昇順でソートしたら、条件文で中身を見ていきます。a[i-1] != iを使って1, 2, …Nと同値になっているか確認します。ひとつでも値が違う際にはflag = Falseにします。

最後にprint(“Yes" if flag else “No")でflag = Trueのとき"Yes"を出力、反対にflag = Falseのときには"No"を出力して完了です。