📝 Descrição

HackerLand University has the following grading policy:

Every student receives a in the inclusive range from to . Any grade less than 40 is a failing grade. Sam is a professor at the university and likes to round each student’s grade according to these rules:

  • If the difference between the and the next multiple of is less than , round up to the next multiple of .
  • If the value of is less than , no rounding occurs as the result will still be a failing grade.

📌 Exemplos

Examplo 1:

  • Nota = 84 vai ser arredondada para 85 pois é maior que 38 e (85 - 84 < 3)
  • Nota = 29 não vai ser arredondada pois é menor do que 38
  • Nota = 57 não vai ser arredondada pois é maior do que 38 mas (60 - 57 = 3)

✅ Casos de teste

Caso 1

Entrada

4 73 67 38 33

Saída

75 67 40 33

🚀 Como resolvi?

Temos duas regras no problema:

  1. Notas menores do que 38 não são arredondadas
  2. Notas maiores ou iguais a 38 só serão arredondadas se a diferença entre o próximo multiplo de 5 e o número atual for menor do que 3

A segunda regra nos força termos a capacidade de obtermos o prõximo número múltiplo de 5 do número atual. Para isso, temos de lembrar que D = d*Q + r, o que nos leva que o prõximo múltiplo seria (Q+1) * 5

🛠️ Implementação

def gradingStudents(grades):
    rounded_grades = []
    for grade in grades:
        next_multiple = (grade // 5 + 1) * 5
        if grade >= 38 and next_multiple - grade < 3:
            rounded_grades.append(next_multiple)
        else:
            rounded_grades.append(grade)
    return rounded_grades

🧠 O que aprendemos?

Dividir o problema em problema menores sempre nos ajudará.