[코딩테스트] 강의실

시나브로·2021년 8월 5일
0

코딩테스트

목록 보기
32/34
post-thumbnail

문제


강의실 문제 바로가기




제출 코드(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();
    }
}
  1. 첫 인덱스 값은 필요하지 않음
  2. 시작시간과 끝나는 시간 기준으로 정렬
  3. 우선순위 큐를 사용하여, 가능한 강의들을 연결 및 추가
  4. 마지막 강의실 갯수 도출
profile
Be More!

0개의 댓글