그리디 알고리즘 예제 - 4
문제 분석
1개의 회의실에 회의가 겹치지 않게 최대한 많은 회의를 배정해야 한다.
이때 그리디 알고리즘을 적용해야 하는데, 현재 회의의 종료 시간이 빠를수록 다음 회의와 겹치지 않게 시작하는 데 유리하다.
종료 시간이 빠른 순서대로 정렬해 겹치지 않는 회의실을 적절하게 선택하면 문제를 해결할 수 있다.
손으로 풀어보기
회의 정보와 관련된 데이터를 저장한 후 종료 시간순으로 정렬한다. 단, 종료 시간이 같을 때는 시작 시간을 기준으로 다시 한번 정렬한다.

차례대로 탐색하다가 시간이 겹치지 않는 회의가 나오면 선택한다.(이미 종료 시간이 빠른 순서대로 정렬을 해 놓았기 때문)

종료 시간이 같은 경우
종료 시간이 같을 때는 시작 시간이 빠른 순으로 정렬하는 기준이 포함되어야 한다. 문제에서 회의의 시작 시간과 종료 시간이 같을 수도 있다고 했다. 예를 들어
(2, 2),(1, 2)2개의 회의가 있을 때, 실제로는 2개의 회의가 겹치지 않게 할 수 있지만 로직상(2, 2)가 먼저 나오면 나중에 나온(1, 2)가 불가능할 수 있다. 따라서 종료 시간이 같으면 시작 시간이 빠른 순서로 정렬하는 로직도 추가해야 한다.
슈도코드
코드 구현 - 파이썬
이차원 리스트의 정렬 방식은 데이터 입력 순서를 통하여 조정할 수 있다.
코드 구현 - 자바
Last updated