-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathGradingStudents.java
More file actions
118 lines (97 loc) · 3.59 KB
/
GradingStudents.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.
*/
import java.io.*;
import java.math.*;
import java.security.*;
import java.text.*;
import java.util.*;
import java.util.concurrent.*;
import java.util.function.*;
import java.util.regex.*;
import java.util.stream.*;
import static java.util.stream.Collectors.joining;
import static java.util.stream.Collectors.toList;
class Result
{
/*
* Complete the 'gradingStudents' function below.
*
* The function is expected to return an INTEGER_ARRAY.
* The function accepts INTEGER_ARRAY grades as parameter.
*/
public static List<Integer> gradingStudents(List<Integer> grades)
{
// Write your code here
List<Integer> finalGrade = new ArrayList<>();
for(int grade : grades)
{
if(grade < 38)
{
finalGrade.add(grade);
}
else
{
int isGradeMultipleOf5 = (((grade / 5) + 1) * 5);
boolean shouldGradeRoundUp = (isGradeMultipleOf5 - grade) < 3;
if(shouldGradeRoundUp)
{
finalGrade.add(isGradeMultipleOf5);
}
else
{
finalGrade.add(grade);
}
}
}
return finalGrade;
}
}
public class GradingStudents
{
public static void main(String[] args) throws IOException
{
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bufferedWriter = new BufferedWriter(new FileWriter(System.getenv("OUTPUT_PATH")));
int gradesCount = Integer.parseInt(bufferedReader.readLine().trim());
List<Integer> grades = IntStream.range(0, gradesCount).mapToObj(i ->
{
try
{
return bufferedReader.readLine().replaceAll("\\s+$", "");
}
catch (IOException ex)
{
throw new RuntimeException(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();
}
}