白駿13458.試験監督(Python/Python)(演算子)


🔎 1080番です.質問の表示
https://www.acmicpc.net/problem/13458
💡 問題を解く前に
問題を解く方法は考えやすい.
試験場ごとに最低1名、最大1名が必要なので、総監督で監視できる生徒数を除く他の生徒数を算出すればよい.
ただ最初は、勝手に状況の数を書くためにif文で4つくらいに分けて、時間短縮のために少しずつ減っていくので悩んでいました.
📋 コードの表示
from sys import stdin

N = stdin.readline()
A = list(map(int, stdin.readline().split()))
B, C = map(int, stdin.readline().split())
cnt = 0

for i in range(len(A)):
    if A[i] >= B:
        A[i] -= B
        cnt += 1

        if A[i] % C == 0:
            cnt += (A[i] // C)
        else:
            cnt += (A[i] // C) + 1
    else:
        cnt += 1

print(cnt)
🥕 コード解釈と関連概念
1.解題の考え方
from sys import stdin

N = stdin.readline()
A = list(map(int, stdin.readline().split()))
B, C = map(int, stdin.readline().split())
cnt = 0
>変数入力を受け入れる区間
総授業ミスのNは入力以外は不要であるため,int変換は省略した.
int(stdin.readline()ではなくstdin.readline()を使用すると、28ミリ秒短縮されます.
for i in range(len(A)):
    if A[i] >= B:
        A[i] -= B
        cnt += 1

        if A[i] % C == 0:
            cnt += (A[i] // C)
        else:
            cnt += (A[i] // C) + 1
    else:
        cnt += 1
1)for:授業ミス(len(A))のように、ドアを回す.
2-1)if:ディレクター(B)が監視できる人数が1つの教室で指定された学生数より多い場合(A[i])
  • 総監督官は監視可能人数(B)を外し、回数(cnt)検査+1
  • を行う.
  • 残りの生徒数(A[i]-=B)が副監督員が監視できる人数の倍数であれば、シェアに応じて回数(cnt)を加算すればよい.
  • 残りの
  • があればシェア分に+1を付けて終了!
  • 2-2)else:総監督(B)が監視できる人数が1つの教室に割り当てられた学生数以下である場合(A[i])
  • は1人の総監督官しか必要ないので、回数+1しか必要ありません.
  • 2.演算子
    今回のコード作成では、単純な演算子のみを理解する必要があります.

    (出典:https://includestdio.tistory.com/16)
    (🔎 さらに勉強する必要がある場合は、上のリンクで!