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関数で総和を出しています。

後は一番長い辺とそれ以外の辺の総和を比べて正解を出します。