AtCoder Beginner Contest 096 B問題
競技プログラミングで使える関数を実際の問題を通して紹介いたします。
今回は「max( )」です。
最大値の取得(max)
A,B,C = [int(i) for i in input().split()] K = int(input()) integerList = [A,B,C] arrayNum = integerList.index(max(integerList)) integerList[arrayNum] = 2**K * integerList[arrayNum] print(sum(integerList))
integerList.index(max(indexList))
上記の例ではmax()を使用することによりリスト内の最大値を出力することが可能です。
コードの改善
競技プログラミングではプログラムの処理完了までの速度も重要な要素の一つですので、より短く簡潔なコードを書くことが重要です。
a,b,c=map(int,input().split()) k = int(input()) print(a+b+c + pow(2,k)*max(a,b,c)-max(a,b,c))
コード長:95 Byte
コード短い。
これは二倍しようが変わらない。
- max(a,b,c)
そしてこれらの内、最大値を消してpow(2,k)*max(a,b,c)する。
ただし可読性的には
a + b + c -max(a,b,c) + pow(2,k)*max(a,b,c)
の方が良いです。
独学プログラマー Python言語の基本から仕事のやり方まで
- 作者: コーリー・アルソフ,清水川貴之監訳,清水川貴之,新木雅也
- 出版社/メーカー: 日経BP社
- 発売日: 2018/02/24
- メディア: 単行本
- この商品を含むブログ (2件) を見る