第61回【Python】内定
現在取り組んでいるのは、paiza ラーニング問題集「配列活用メニュー」になります。
はじめに
猫とキャンプと野球観戦と AWS が大好きな旦那、LeoSaki です。モフモフしたい。
Python をゼロから勉強してみよう、のコーナー 61 回目です。
少し問題が複雑化して、実務でもありそうなものが問われています。実際はもう少し処理が加わるのでしょうけれど。今までいろんな作業を行ってきた「結果」が活かされていて、スラスラとコードを書くことができています。実務に勝るもの無しです。
それでは、今日も頑張ってみようと思います。
内定
人事のあなたは、N 人の中から採用者を決定します。N 人のテストの点数はそれぞれ A_i (1 ≦ i ≦ N)です。テストの点数が K 点以上の人全員を採用したいのですが、得点の高い方から M 人に辞退されてしまいました。あなたの採用することのできる最大の人数を答えてください。採用できる人数が 0 人の場合もあることに気をつけてください。
N K M
A_1
...
A_N
・1 行目では、テストを受けた人数 N と、テストのボーダーの点数 K , 辞退された人数 M が半角スペース区切りで与えられます。
・続く N 行では、N 人のテストの点数 A_i (1 ≦ i ≦ N)が改行区切りで与えられます。
すべてのテストケースにおいて、以下の条件をみたします。
・1 ≦ N , M ≦ 100
・0 ≦ A_i , K ≦ 10000 (1 ≦ i ≦ N)
5 3974 0
2049
4690
6867
3414
460
合格者一覧を出せ、というわけでなく、合格者数を出せ、というわけなので、そんなに難しくはない。
Python
N,K,M = map(int,input().split())
ans = 0
for _ in range(N):
A = int(input())
if A >= K:
ans += 1
ans -= M
if ans < 0:
ans = 0
print(ans)
VBA
NKM = Split(Cells(1, 1), " ")
N = Val(NKM(0))
K = Val(NKM(1))
M = Val(NKM(2))
ans = 0
For i = 0 To N - 1
A = Cells(i + 2, 1)
If A >= K Then ans = ans + 1
Next
ans = ans - M
If ans < 0 Then ans = 0
Debug.Print ans
最後に
もし、合格者一覧を出せ、であったり、上位〇番目まで但し辞退者がいる場合は繰り上げ、であったり、条件が複雑化してきても、基本的にコードの流れは同じなのだと思う。それぞれでちょっとしたコツは必要そうだけれど。
まだ、VBA でも同じようにコードが書くことができている。なんか凄い。もっと早い段階で VBA では限界だ、ってなる気がしていたんだ。正直なところ。
引き続き、よろしくお願いいたします!
ディスカッション
コメント一覧
まだ、コメントがありません