AtCoder ABC 205 B – Permutation Check Python解説
Permutation Check
1 以上 N 以下の整数からなる長さ N の数列 A=(A1,A2,…,AN) が与えられます。
AtCoder Beginner Contest 「Permutation Check」
A が (1,2,…,N) の並び替えによって得られるかどうか判定してください。
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"を出力して完了です。