시간정보를 입력받으면서 l ~ r시간의 등장횟수를 1씩 증가시킵니다.
이제 연속된 구간에서의 최댓값을 갱신하면서, list[i] = 0이 되는 시점에서 지금까지 연속으로 등장했던 시간 * 최댓값을 계속 더해주시면 됩니다.
이후에는 다음 구간을 구하기 위해 con과 max를 0으로 다시 초기화시켜줍니다.
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
|
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class Main {
static BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
static StringTokenizer st;
static int list[] = new int[366];
static int N, ans;
static void func() {
int max = 0;
int con = 0;
for (int i = 1; i <= 365; i++) {
if (list[i] > 0) {
con++;
max = Math.max(max, list[i]);
} else {
ans += (con * max);
con = 0;
max = 0;
}
}
ans += (con * max);
System.out.println(ans);
}
static void input() throws Exception {
int l, r;
st = new StringTokenizer(br.readLine());
N = Integer.parseInt(st.nextToken());
for (int i = 0; i < N; i++) {
st = new StringTokenizer(br.readLine());
l = Integer.parseInt(st.nextToken());
r = Integer.parseInt(st.nextToken());
for (int j = l; j <= r; j++)
list[j]++;
}
}
public static void main(String[] args) throws Exception {
input();
func();
}
}
|
cs |
'algorithm > Implementation' 카테고리의 다른 글
boj 3758 KCPC (0) | 2024.06.09 |
---|---|
boj 17143 낚시왕 (0) | 2021.04.23 |
boj 17144 미세먼지 안녕! (0) | 2021.04.14 |
boj 2564 경비원 (0) | 2021.04.13 |
boj 16719 ZOAC (0) | 2021.03.15 |