AtCoder ABC 117 B – Polygon Python解説
Polygon
2 次元平面上に辺の長さがそれぞれ L_1, L_2, …, L_Nの N 角形(凸多角形でなくてもよい)が描けるかを判定してください。
定理 : 一番長い辺が他の N-1 辺の長さの合計よりも真に短い場合に限り、条件を満たす N 角形が描ける。
AtCoder Beginner Contest 「Polygon」
この問題では定理が示されているので、定理を使って実装していきます。
n = int(input())
l = list(map(int, input().split()))
l = sorted(l)
a = l.pop(-1)
b = sum(l)
if a < b:
print("Yes")
else:
print("No")
定理そのままに実装しています。一番長い辺とそれ以外の辺の総和を求めたいので、まず、配列lをソートした後にpopで一番長い辺を取得しています。popで一番長い辺を取り除いたらsum関数で総和を出しています。
後は一番長い辺とそれ以外の辺の総和を比べて正解を出します。