문제
강의실 문제 바로가기
제출 코드(JAVA)
코드 제출
import java.util.*;
public class 강의실_1374 {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
int size = scan.nextInt();
ArrayList<int[]> lessions = new ArrayList<>();
for(int i = 0; i < size; i++) {
int[] tmp = new int[3];
for (int j = 0; j < 3; j++) {
tmp[j] = scan.nextInt();
}
lessions.add(tmp);
}
int result = solution(lessions);
System.out.println(result);
}
private static int solution(ArrayList<int[]> lessions) {
Queue<Integer> queue = new PriorityQueue();
lessions.sort((o1, o2) -> {
if (o1[1] - o2[1] == 0 ) {
return o1[2] - o2[2];
} else {
return o1[1] - o2[1];
}
});
for (int[] lession : lessions) {
if (!queue.isEmpty()) {
if (queue.peek() <= lession[1]) {
queue.poll();
}
}
queue.add(lession[2]);
}
return queue.size();
}
}
- 첫 인덱스 값은 필요하지 않음
- 시작시간과 끝나는 시간 기준으로 정렬
- 우선순위 큐를 사용하여, 가능한 강의들을 연결 및 추가
- 마지막 강의실 갯수 도출