코드
<script>
function solution(meeting){
let answer=0;
meeting.sort((a, b)=>{
if(a[1]===b[1]) return a[0]-b[0];
else return a[1]-b[1];
})
let et=0;
for(let x of meeting){
if(x[0]>=et){
answer++;
et=x[1];
}
}
return answer;
}
let arr=[[1, 4], [2, 3], [3, 5], [4, 6], [5, 7]];
console.log(solution(arr));
원리
- 최대한 많은 강의실을 확보하려면 회의 끝나는 시간이 작아야 더 많이 넣을수 있다.
그러므로 arr[1]을 기준으로 정렬한다.
만약 arr[1]이 같다면 arr[0]이 작은 순서대로 오름차순한다.
회의시간이 전체 시간이 짧아야 더 많이 넣을수 있기 때문이다.
-> 이렇게 정렬하여 끝나는 시간(e) <= 시작하는 시간(s) 이면 count를 +1해준다.
코드분석
- meeting[1]을 기준으로 오름차순으로 정렬한다.
- meeting[1]이 같을 경우에는 meeting[0]을 기준으로 오름차순 한다.
- et은 회의가 끝나는 시간이다.
3-1. for 문을 돌려 meeting의 요소인 x[0]이 et보다 크면 다음 회의를 넣을수 있으므로 이때 answer값에 +1을 해준다.