AtCoder ABC 132 B – Ordinary Number Python解説
Ordinary Number
{1, 2, …, n} の順列 p = {p1, p2, …, pn} があります。
AtCoder Beginner Contest 「Ordinary Number」
以下の条件を満たすような pi (1<i<n) がいくつあるかを出力してください。
pi−1, pi, pi+1 の 3 つの数の中で、pi が 2 番目に小さい。
pi−1, pi, pi+1 の3つの数をスライスで用意。そして pi−1, pi, pi+1 を比べて pi が2番目に小さかったらカウントアップをしていきます。
n = int(input())
p = list(map(int, input().split()))
cnt = 0
for i in range(n - 2):
p1, p2, p3 = p[i: i+3]
if p1 < p2 < p3 or p3 < p2 < p1:
cnt += 1
print(cnt)
p1, p2, p3 = p[i: i+3]で配列から3つの数を取りました。その分for文の範囲はn – 2になるので注意してください。3つの数が用意できたので比べていきます。 pi が2番目に小さい場合として、p1 < p2 < p3 or p3 < p2 < p1が考えられます。条件に当てはまればカウントアップして、最後にcntを出力すれば完了です。