728x90
문제
https://www.acmicpc.net/problem/1931
3줄 요약
- 회의 정보를 입력받아 2차원 배열에 저장합니다.
- 회의 끝나는 시간을 기준으로 오름차순 정렬하고, 끝나는 시간이 같은 경우 시작 시간을 기준으로 오름차순 정렬합니다.
- 이전 회의의 끝나는 시간보다 현재 회의의 시작 시간이 같거나 늦으면 선택하여 최대 회의 개수를 구합니다.
코드
// package boj1931;
import java.io.*;
import java.util.*;
public class Main {
public static void main(String[] args) throws Exception {
// 입력
// System.setIn(new FileInputStream("src/input.txt"));
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int N = Integer.parseInt(br.readLine());
int[][] meetings = new int[N][2];
// 회의 정보 입력받기
for (int i = 0; i < N; i++) {
String[] input = br.readLine().split(" ");
meetings[i][0] = Integer.parseInt(input[0]);
meetings[i][1] = Integer.parseInt(input[1]);
}
br.close();
// 회의 끝나는 시간을 기준으로 오름차순 정렬
Arrays.sort(meetings, Comparator.comparingInt(o -> o[1]));
// 회의 끝나는 시간이 같은 경우, 시작 시간을 기준으로 오름차순 정렬
Arrays.sort(meetings, (o1, o2) -> {
if (o1[1] == o2[1]) {
return o1[0] - o2[0];
}
return 0;
});
int result = 0;
int endTime = 0;
// 회의 선택하기
for (int i = 0; i < N; i++) {
// 이전 회의의 끝나는 시간보다 현재 회의의 시작 시간이 같거나 늦으면 선택
if (meetings[i][0] >= endTime) {
endTime = meetings[i][1];
result++;
}
}
// 출력
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
bw.write(Integer.toString(result));
bw.flush();
bw.close();
}
}
'Problem_Solving' 카테고리의 다른 글
백준(BOJ) 1764 : 듣보잡 (실버4) / 자바(Java) 풀이 (0) | 2024.05.01 |
---|---|
백준(BOJ) 1620 : 나는야 포켓몬 마스터 이다솜 (실버4) / 자바(Java) 풀이 (0) | 2024.05.01 |
백준(BOJ) 11399 : ATM (실버4) / 자바(Java) 풀이 (0) | 2024.04.30 |
백준(BOJ) 1018 : 체스판 다시 칠하기 (실버4) / 자바(Java) 풀이 (0) | 2024.04.30 |
백준(BOJ) 1436 : 영화감독 숌 (실버5) / 자바(Java) 풀이 (0) | 2024.04.30 |