- Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathGradingStudents.java
More file actions
Latest commit
118 lines (97 loc) · 3.59 KB
/
Copy pathGradingStudents.java
File metadata and controls
118 lines (97 loc) · 3.59 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
/*
Problem Statement:
Sam is a professor at HackerLand University, and he needs help rounding student grades according to the university's grading policy. Every student receives a grade in the inclusive range from 0 to 100. A grade less than 40 is considered a failing grade.
The university's rounding policy is as follows:
If the difference between a student's grade and the next multiple of 5 is less than 3, round the grade up to the next multiple of 5.
If the value of the grade is less than 38, no rounding occurs because the grade is a failing grade.
Grades that are exactly multiples of 5 are not changed.
Task:
Write a function gradingStudents that takes an integer array of grades as input and returns a rounded integer array according to the university's grading policy.
Parameters:
grades: A list of integers where each integer represents a student's grade before rounding.
Returns:
A list of integers representing the grades after applying the rounding rules.
Constraints:
1 <= grades.size() <= 100
0 <= grades[i] <= 100 where grades[i] is the grade of the i-th student.
Note:
The rounding rule only applies to grades greater than or equal to 38.
*/
importjava.io.*;
importjava.math.*;
importjava.security.*;
importjava.text.*;
importjava.util.*;
importjava.util.concurrent.*;
importjava.util.function.*;
importjava.util.regex.*;
importjava.util.stream.*;
importstaticjava.util.stream.Collectors.joining;
importstaticjava.util.stream.Collectors.toList;
classResult
{
/*
* Complete the 'gradingStudents' function below.
*
* The function is expected to return an INTEGER_ARRAY.
* The function accepts INTEGER_ARRAY grades as parameter.
*/
publicstaticList<Integer> gradingStudents(List<Integer> grades)
{
// Write your code here
List<Integer> finalGrade = newArrayList<>();
for(intgrade : grades)
{
if(grade < 38)
{
finalGrade.add(grade);
}
else
{
intisGradeMultipleOf5 = (((grade / 5) + 1) * 5);
booleanshouldGradeRoundUp = (isGradeMultipleOf5 - grade) < 3;
if(shouldGradeRoundUp)
{
finalGrade.add(isGradeMultipleOf5);
}
else
{
finalGrade.add(grade);
}
}
}
returnfinalGrade;
}
}
publicclassGradingStudents
{
publicstaticvoidmain(String[] args) throwsIOException
{
BufferedReaderbufferedReader = newBufferedReader(newInputStreamReader(System.in));
BufferedWriterbufferedWriter = newBufferedWriter(newFileWriter(System.getenv("OUTPUT_PATH")));
intgradesCount = Integer.parseInt(bufferedReader.readLine().trim());
List<Integer> grades = IntStream.range(0, gradesCount).mapToObj(i ->
{
try
{
returnbufferedReader.readLine().replaceAll("\\s+$", "");
}
catch (IOExceptionex)
{
thrownewRuntimeException(ex);
}
})
.map(String::trim)
.map(Integer::parseInt)
.collect(toList());
List<Integer> result = Result.gradingStudents(grades);
bufferedWriter.write(
result.stream()
.map(Object::toString)
.collect(joining("\n"))
+ "\n"
);
bufferedReader.close();
bufferedWriter.close();
}
}