-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathPMS_72414.java
More file actions
66 lines (49 loc) · 1.6 KB
/
PMS_72414.java
File metadata and controls
66 lines (49 loc) · 1.6 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
package programmers;
public class PMS_72414 {
private static int maxBound;
private static int advTime;
public String solution(String play_time, String adv_time, String[] logs) {
maxBound = formatToSec(play_time);
advTime = formatToSec(adv_time);
int[] seeTimes = new int[360000];
for (String log : logs) {
String[] times = log.split("-");
int startTime = formatToSec(times[0]);
int endTime = formatToSec(times[1]);
for (int i = startTime; i < endTime; i++) {
seeTimes[i]++;
}
}
int answer = 0;
long maxSum = 0;
long sum = 0;
for (int i = 0; i < advTime; i++) {
sum += seeTimes[i];
}
maxSum = sum;
for (int i = advTime; i < maxBound; i++) {
sum += seeTimes[i] - seeTimes[i - advTime];
if (sum > maxSum) {
maxSum = sum;
answer = i - advTime + 1;
}
}
return secToFormat(answer);
}
public static int formatToSec(String time) {
String[] numbers = time.split(":");
int hh = Integer.parseInt(numbers[0]) * 3600;
int mm = Integer.parseInt(numbers[1]) * 60;
int ss = Integer.parseInt(numbers[2]);
return hh + mm + ss;
}
public static String secToFormat(int time) {
int tmp = time;
int hh = (int) (tmp / 3600);
tmp %= 3600;
int mm = (int) tmp / 60;
tmp %= 60;
int ss = (int) tmp;
return String.format("%02d:%02d:%02d", hh, mm, ss);
}
}