週末副業記

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

複数回のinput()結果を配列に格納する(AtCoder(競プロ)1日1問【14日目】【Python】)


AtCoder Beginner Contest 095 B問題

abc095.contest.atcoder.jp

 

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

今回は「input( )」です。

 

複数回のinput( )

所持金:X円
最低限作りたいドーナツの種類:N
ドーナツの素の値段:m_1+m_2+ ....m_N \leq X
でN種類のドーナツを作り、残った値段でできるだけ多くのドーナツを作ると
最大何個作る事ができるか

N,X = map(int, input().split())
ms = [int(input()) for i in range(N)]
print(N + int((X - sum(ms))/min(ms)))

ms = [int( input( ) ) for i in range(N)]

により、N回の入力値をmsという配列に格納していきます。

 

 X-sum(ms)
で残りの値段が算出でき、
 /min(ms)
でドーナツの中で最も安いものをいくつ作る事ができるのを算出できます。

 

コードの改善

N,X=map(int,input().split())
s=[int(input()) for i in range(N)]
print(((X-sum(s))//min(s))+N)

最後の行の

//

これは切り捨て徐算といって、

3//2 → 1
5//3 → 1
7//2 → 3

といった具合で、商だけを出力することができます。

 

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

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