PS
[백준] 1931번 : 회의실 배정[Java]
devkdh
2025. 7. 8. 11:29

#풀이
import java.io.*;
import java.util.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st;
int N = Integer.parseInt(br.readLine());
int[][] rooms = new int[N][2];
int start,end;
for(int i = 0; i<N; i++){
st = new StringTokenizer(br.readLine());
start = Integer.parseInt(st.nextToken());
end = Integer.parseInt(st.nextToken());
rooms[i][0] = start;
rooms[i][1] = end;
}
Arrays.sort(rooms,(a,b)->{
if(a[1]==b[1])return a[0]-b[0];
return a[1]-b[1];
});
int ans = 1;
int now = 0;
int next = 1;
while(true){
if(rooms[now][1]<=rooms[next][0]){
now = next;
ans++;
}
next++;
if(next>= rooms.length)break;
}
System.out.println(ans);
}
}
#성능

#정리
1. 종료시간 오름차순으로 정렬하되, 종료시간이 같을 경우 시작시간 기준으로 정렬함.
2. now 포인터는 현재 선택된 회의 인덱스, next 포인터를 통해 다음 회의를 탐색하며, 현재 회의가 끝난 시점 이후에 시작하는 회의만 선택.