ebisukeプログラミング初心者脱出黙示録

30歳を過ぎてから始めたプログラミングと競プロの記録。Pythonで取り組んでいます。Arduinoで電子工作も

AtCoder-ABC028 C - 数を3つ選ぶマン【Python解答例】

AtCoder ProblemsのRecommendationでおすすめされたAtCoder Beginner Contest028 C - 数を3つ選ぶマンを解いていきます。


AtCoder Beginner Contest028 C - 数を3つ選ぶマン

atcoder.jp

問題文

異なる整数が 5 個与えられます。
この中から 3 つ選んでその和で表すことの出来る整数のうち、3 番目に大きいものを出力してください。

入力

・1 行に 5 つの整数 A,B,C,D,E( 1 ≦ A < B < C < D < E ≦ 100 ) が空白区切りで与えられる

解答例

import itertools

N = list(map(int, input().split()))

comb = list(itertools.combinations(N,3))

Ans = []

for i in comb:
    temp = i[0] + i[1] + i[2]
    Ans.append(temp)

Ans.sort(reverse=True)

print(Ans[2])

解説

異なる5つの整数が与えられて、このなかから3つ選んで足し合わせた数のうち3番目に大きい数字を答える問題です。

5つの整数から3つ選ぶ組み合わせを足し合わせてAnsリストに入れていきました。
すべての組み合わせを足し合わせたあとで、Ansリストを降順でソートします。
そしてAnsリストの3番目の数を出力すればACでした。

過去に書いた順列と組み合わせの記事はこちら
ebisuke33.hatenablog.com

itertoolsを用いることで組み合わせが簡単に求まります。
使い慣れていないので実装に時間がかかりましたが今後も使う機会が多いと思います。



茶色の問題なら こうすれば解けそう!って思いつく時間が短くなってきた気がします。
少しずつですが実力をつけていきたいです!