File tree 1 file changed +63
-0
lines changed
1 file changed +63
-0
lines changed Original file line number Diff line number Diff line change
1
+ package backjoon ;
2
+ // https://www.acmicpc.net/problem/1931
3
+
4
+ import java .io .BufferedReader ;
5
+ import java .io .IOException ;
6
+ import java .io .InputStreamReader ;
7
+ import java .util .Arrays ;
8
+ import java .util .Comparator ;
9
+ import java .util .StringTokenizer ;
10
+
11
+ public class _1931 {
12
+ public static void main (String [] args ) throws IOException {
13
+
14
+ BufferedReader br = new BufferedReader (new InputStreamReader (System .in ));
15
+
16
+ int N = Integer .parseInt (br .readLine ());
17
+
18
+ /*
19
+ time[][0] 은 시작시점을 의미
20
+ time[][1] 은 종료시점을 의미
21
+ */
22
+ int [][] time = new int [N ][2 ];
23
+
24
+ StringTokenizer st ;
25
+
26
+ for (int i = 0 ; i < N ; i ++) {
27
+ st = new StringTokenizer (br .readLine (), " " );
28
+ time [i ][0 ] = Integer .parseInt (st .nextToken ()); // 시작시간
29
+ time [i ][1 ] = Integer .parseInt (st .nextToken ()); // 종료시간
30
+ }
31
+
32
+
33
+ // 끝나는 시간을 기준으로 정렬하기 위해 compare 재정의
34
+ Arrays .sort (time , new Comparator <int []>() {
35
+
36
+ @ Override
37
+ public int compare (int [] o1 , int [] o2 ) {
38
+
39
+ // 종료시간이 같을 경우 시작시간 빠른순 정렬
40
+ if (o1 [1 ] == o2 [1 ]) {
41
+ return o1 [0 ] - o2 [0 ];
42
+ }
43
+
44
+ return o1 [1 ] - o2 [1 ];
45
+ }
46
+
47
+ });
48
+
49
+ int count = 0 ;
50
+ int prev_end_time = 0 ;
51
+
52
+ for (int i = 0 ; i < N ; i ++) {
53
+
54
+ // 직전 종료시간이 다음 회의 시작 시간보다 작거나 같다면 갱신
55
+ if (prev_end_time <= time [i ][0 ]) {
56
+ prev_end_time = time [i ][1 ];
57
+ count ++;
58
+ }
59
+ }
60
+
61
+ System .out .println (count );
62
+ }
63
+ }
You can’t perform that action at this time.
0 commit comments