반응형
🅰 백준 1931. 회의실 배정
✏️ 문제 풀이
- 회의실 배정은 종료시간이 빠른 순서대로 처리를 해야한다.
- 종료시간 기준으로 오름차순을 정렬하고, 종료시간이 같으면 시작시간 기준으로 오름차순을 정렬하였다.
✏️ 소스코드
package greedy;
import java.util.*;
import java.io.*;
public class Main_실버2_1931_손은성 {
private static int conference[][];
private static int minEndTime = Integer.MIN_VALUE;
private static int cnt;
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int N = Integer.parseInt(br.readLine());
conference = new int[N][2];
// 회의실 데이터 입력
for (int i = 0; i < N; i++) {
StringTokenizer st = new StringTokenizer(br.readLine());
conference[i][0] = Integer.parseInt(st.nextToken());
conference[i][1] = Integer.parseInt(st.nextToken());
}
/* 2차원 배열 end시간 기준으로 오름차순으로 정렬
* end시간이 같으면 start시간 기준으로 오름차순 정렬
* */
Arrays.sort(conference, (o1, o2) -> {
if (o1[1] == o2[1]) {
return Integer.compare(o1[0], o2[0]);
} else
return Integer.compare(o1[1], o2[1]);
});
checkedSchedule(N);
System.out.println(cnt);
}
// 최적의 해 구하는 함수
private static void checkedSchedule(int N) {
for (int i = 0; i < N; i++) {
// 회의 시작 시간이 이전 회의 종료시간보다 빠르면 continue
if (conference[i][0] < minEndTime)
continue;
else {
minEndTime = conference[i][1];
cnt++;
}
}
}
}
✅ 후기
- 2차원 배열을 정렬하는법을 몰랐는데 이 문제를 통해 알게되었다. 나중에 다시한번 블로그에 정리 해야겠다.
반응형
'백준 > 그리디' 카테고리의 다른 글
백준 1744. 수 묶기 (0) | 2021.08.17 |
---|---|
백준 1541. 잃어버린 괄호 (0) | 2021.08.17 |
백준 11399. ATM (0) | 2021.08.17 |
백준 11047. 동전 (0) | 2021.08.17 |
백준 10610. 30 / 배수판정법 (0) | 2021.08.13 |
댓글