【AtCoder】PythonでABC234のB問題を丁寧に読み解く

AtCoder Beginner Contest 234 - Longest Segment

実際の問題はこちらからご覧ください。

【AtCoder Beginner Contest 234】B – Longest Segment

この問題のポイント

「2点を結ぶ線分の長さ = ユークリッド距離」という数学的な知識と、その求め方を理解していること

ユークリッド距離は、最も基本的な距離の測定方法の一つで、平面や空間における2点間の「直線距離」を意味する。具体的には、2点間の最短距離を測定する方法で、普段の日常生活では「直線で測った距離」と考えるものです。

2次元空間(平面)でのユークリッド距離の求め方は、2点 ( (x_1, y_1) ) と ( (x_2, y_2) ) 間の距離を、次の公式で計算します。

この公式は、ピタゴラスの定理に基づいています。3次元空間では、もう一つの座標軸 ( z ) が加わりますが、基本的な考え方は同じです。

実装方法

  1. 点の数Nと点の座標を2つの配列に格納する
  2. 二重ループの中で全ての点の組み合わせの線分の長さを求める
  3. 求めた線分の長さの最大値を探す

Pythonによる解答

from math import sqrt
n = int(input())
x = [0]*n
y = [0]*n
for i in range(n):
    x[i], y[i] = map(int, input().split())
ans = 0
for i in range(n):
    for j in range(i+1, n):
        x_len = x[i] - x[j]
        y_len = y[i] - y[j]
        ans = max(ans, sqrt(x_len*x_len + y_len*y_len))
print(ans)