AtCoder Beginner Contest 088 B問題
競技プログラミングで使える関数を実際の問題を通して紹介いたします。
今回は「sorted()」です。
sorted()の出力を降順にする
N=input() a= sorted([int(j) for j in input().split()],reverse=True) print(sum(a[::2])-sum(a[1::2]))
sorted()の第二引数に「reverse=True」を入力することにより「降順」にすることができます。
コードの改善
他の人の書いたコードを見て考察をし、コードの改善を行います。
N=int(input()) A=sorted(map(int,input().split()))[::-1] print(sum(A[::2])*2-sum(A))
2行目::[::-1]はpython的には汎用性あるのでよいが、reverse=Trueの方が見た目的には分かりやすいと思います。
4行目::問題的に言うとこれは以下のようになっています。
Alice ×2 - ( Alice + Bob) = Alice - Bob
sum([::2])
この処理はメモリを食うと思います。
しかし、多少のメモリを犠牲に可読性をとることもエンジニアとして重要ですね。
独学プログラマー Python言語の基本から仕事のやり方まで
- 作者: コーリー・アルソフ,清水川貴之監訳,清水川貴之,新木雅也
- 出版社/メーカー: 日経BP社
- 発売日: 2018/02/24
- メディア: 単行本
- この商品を含むブログ (2件) を見る