週末副業記

土日は副業エンジニアのブログです。副業に関することを投稿します。

最大値の取得(max)(AtCoder(競プロ)1日1問【9日目】【Python】)


AtCoder Beginner Contest 096 B問題

abc096.contest.atcoder.jp

 

競技プログラミングで使える関数を実際の問題を通して紹介いたします。

今回は「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
コード短い。
 a+b+c
これは二倍しようが変わらない。

- 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言語の基本から仕事のやり方まで

独学プログラマー Python言語の基本から仕事のやり方まで