実際の問題はこちらからご覧ください。
【AtCoder Beginner Contest 234】B – Longest Segment
この問題のポイント
「2点を結ぶ線分の長さ = ユークリッド距離」という数学的な知識と、その求め方を理解していること
ユークリッド距離は、最も基本的な距離の測定方法の一つで、平面や空間における2点間の「直線距離」を意味する。具体的には、2点間の最短距離を測定する方法で、普段の日常生活では「直線で測った距離」と考えるものです。
2次元空間(平面)でのユークリッド距離の求め方は、2点 ( (x_1, y_1) ) と ( (x_2, y_2) ) 間の距離を、次の公式で計算します。
この公式は、ピタゴラスの定理に基づいています。3次元空間では、もう一つの座標軸 ( z ) が加わりますが、基本的な考え方は同じです。
実装方法
- 点の数Nと点の座標を2つの配列に格納する
- 二重ループの中で全ての点の組み合わせの線分の長さを求める
- 求めた線分の長さの最大値を探す
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)