Skip to content

Commit 93e74a5

Browse files
committed
#45 1931 회의실 배정
1 parent ea9cbfc commit 93e74a5

File tree

1 file changed

+63
-0
lines changed

1 file changed

+63
-0
lines changed

src/backjoon/_1931.java

+63
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,63 @@
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+
}

0 commit comments

Comments
 (0)