function solution(times){
let res = [],
answer = Number.MIN_SAFE_INTEGER;,
temp = 0;
for(let[x,y] of times){
res.push([x,"s"]);
res.push([y,"e"]);
}
res.sort((a,b) => {
if(a[0]===b[0]) return a[1].charCodeAt(0)-b[1].charCodeAt(0);
else return a[0]-b[0];
});
console.log(res);
for(let time of res){
if(time[1]==="s") temp++;
else temp--;
answer = Math.max(answer, temp)
}
return answer;
}
let arr=[[13, 18], [12, 15], [15, 20], [20, 30], [5, 14]];
console.log(solution(arr));
결론부터 말하면 최고로 많이 있던 사람의 수를 묻는 문제이므로 for 문을 돌려 흰색숫자이면 +1을 노란색 숫자이면 -1을 해주면 된다.
단, 흰색숫자와, 노란색숫자가 같은경우에는 노란색 숫자를 빼줘야 한다. 왜냐하면 흰색숫자가 먼저 +1을 해버리는 경우에는 최고값이 +1 되기 때문이다.
예를들어 최고값이 2인경우에 흰색과 노란색 숫자가 동시에 나오면 최고값이 3이 되었다가 다시 2가 된다.
이 과정에서 answer = 3이 저장되기 때문이다.
sort()함수에서 charcodeAt()으로 대소를 비교하여 정렬하는 법에 대해 알게되었다.