자바스크립트 코딩테스트 '회의실배정'

릿·2021년 8월 26일
0

코딩테스트

목록 보기
3/27

[x, y]좌표 중 x는 회의 시작시간, y는 회의 끝나는 시간이다. 2차원 배열이 주어지고, 최대한 많은 회의를 할 수 있는 수를 리턴하는 문제이다. 단, 시작시간과 끝나는 시간이 같은 경우도 있음.

  1. 내 풀이 :
    처음에는 map, filter를 써야 하나 싶어서 키워드 검색하다가, 쌤 강의 초반부분 듣고 다시 풀어봄.
function solution(meeting){
	let answer=0;
	meeting.sort((a, b)=> {
		if (a[1] < b[1]) return a[1]-b[1];
		else return a[0]-b[0];
    });
    for (let i=0; i<meeting.length-1; i++) {
        if (meeting[i] <= meeting[i+1] && meeting[i][0] <= meeting[i+1][1]) answer++;
    }
    return answer;
}

//let arr=[[3, 3], [1, 3], [2, 3]]
let arr=[[1, 4], [2, 3], [3, 5], [4, 6], [5, 7]];
console.log(solution(arr));
  1. 쌤 풀이 :
    -끝나는 시간 기준으로 sort 오름차순 정렬을 한다.
    -끝나는 시간이 같은 경우에는 시작시간 기준으로 정렬을 함.
    -for문을 돌려서 et변수에 end time을 저장하고, 다음 요소의 시작시간과 비교해서 answer를 카운트한다.
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=[[3, 3], [1, 3], [2, 3]]
let arr=[[1, 4], [2, 3], [3, 5], [4, 6], [5, 7]];
console.log(solution(arr));
profile
새로운 도전과 재미를 추구하는 프론트엔드 개발자

0개의 댓글