반응형
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Collections;
import java.util.StringTokenizer;
// Meeting Class 선언
class Meeting implements Comparable<Meeting>{
int start;
int end;
public Meeting(int start, int end) {
this.start = start;
this.end = end;
}
// Sort에 사용할 기준 설정
@Override
public int compareTo(Meeting m) {
// 종료시간이 같다면 시작시간이 빠른 순서대로 정렬
if(this.end == m.end) {
return this.start - m.start;
}
// 종료시간을 기준으로 정렬
return this.end - m.end;
}
}
public class Main {
public static void main(String[] args) throws IOException{
// TODO Auto-generated method stub
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int N = Integer.parseInt(br.readLine());
ArrayList<Meeting> list = new ArrayList<>();
int result = 0;
int end_time = 0;
StringTokenizer st;
for(int i=0;i<N;i++) {
String temp = br.readLine();
st = new StringTokenizer(temp);
Meeting m = new Meeting( Integer.parseInt(st.nextToken()), Integer.parseInt(st.nextToken()) );
list.add(m);
}
// 종료시간이 빠른 순서대로 정렬
Collections.sort(list);
for(int i=0;i<list.size();i++ ) {
if(end_time <= list.get(i).start ) {
result++;
end_time = list.get(i).end;
}
}
System.out.println(result);
}
}
이번 문제의 중요한 부분은 아래와 같습니다.
1. 종료시간을 기준으로 정렬을 할 수 있는가 (종료시간이 겹칠 경우, 시작시간이 이른 순서대로 정렬할 수 있는가)
+) compareTo() Override를 이용하여 ArrayList를 원하는 기준으로 정렬할 수 있는가
소스 설명은 주석을 참고해주세요.
좋은 지적과 지식 공유는 언제나 환영합니다^^
반응형
'Algorithm' 카테고리의 다른 글
[BAEKJOON] 1654번 : 랜선자르기 (0) | 2022.01.20 |
---|---|
[이것이 코딩테스트다] 6. 탐색 - 순차 탐색, 이진 탐색 (0) | 2022.01.18 |
[이것이 코딩테스트다] 5. 정렬 - 기본 문제 (0) | 2022.01.16 |
[이것이 코딩테스트다] 5. 정렬 - 선택, 삽입, 퀵, 계수 정렬 (0) | 2022.01.11 |
[BAEKJOON] 14502번 : 연구소 (0) | 2022.01.10 |