-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathMissingHours.java
More file actions
48 lines (42 loc) · 1.25 KB
/
MissingHours.java
File metadata and controls
48 lines (42 loc) · 1.25 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
import java.io.*;
import java.time.*;
import static java.nio.charset.StandardCharsets.UTF_8;
import static java.time.DayOfWeek.*;
public class MissingHours {
public static void main(
String... args
) throws Exception {
try (
var reader = new InputStreamReader(System.in, UTF_8);
) {
var minutes = new BufferedReader(reader)
.lines()
.mapToInt(MissingHours::diffMinutes)
.sum();
System.out.println(Duration.ofMinutes(minutes));
}
}
private static int diffMinutes(
String line
) {
var words = line.split(" ");
var date = words[0];
var time = words[1];
var parts = time.split(":");
var hours = Integer.parseInt(parts[0]);
var minutes = Integer.parseInt(parts[1]);
return hours * 60 + minutes - requiredMinutes(date);
}
private static int requiredMinutes(
String date
) {
return isWeekend(date) ? 0 : 7 * 60;
}
private static boolean isWeekend(
String dateAsString
) {
var date = LocalDate.parse(dateAsString);
var dayOfWeek = date.getDayOfWeek();
return dayOfWeek == SATURDAY || dayOfWeek == SUNDAY;
}
}