AtCoder ABC 102 B – Maximum Difference Python解説

スポンサーリンク

Maximum Difference

長さ N の整数列 A が与えられます。 A の(添字の)異なる 2 要素の差の絶対値の最大値を求めてください。

AtCoder Beginner Contest 「Maximum Difference」

特に難しい問題ではないかと思います。思い浮かんだ解き方としては、すべての要素の差を2重ループで計算してみる。もう一つは配列をソートして、配列の最初の数値と最後の数値を引いてみるやり方でしたので、両方やってみます。

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

ans = 0

for i in range(n):
    for j in range(i+1, n):
        ans = max(abs(a[i] - a[j]), ans)
        
print(ans)

今回の問題では異なる2要素の差を求めるので、内側のfor文ではrange(i+1, n)にしています。差の絶対値を求めたいのでabs関数で絶対値にしています。そして、max関数で差分を更新しているか確認して完了です。

配列を使った解き方は

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

a = sorted(a)

print(a[-1] - a[0])

こちらは至ってシンプルです。配列aを昇順にソートしたら、配列の最後にある数値と最初の数値の差分を取って終了です。コードのシンプルさから、この問題ではこちらの解き方がおすすめです。