결혼식 피로연에 올 수 있는 친구들의 총 피로연 체류시간을 [x(피로연장 도착시간), y(귀가시간)]로 표현한 2차원 배열이 주어진다.
피로연 시간대 중, 최대 같이 있는 친구들 수를 리턴하는 문제.
단, 3시에 귀가하는 친구는 3시에는 피로연장에 없고, 3시에 오는 친구는 3시에 피로연장에 있다고 간주한다.
function solution(times){
let answer=0;
let max=Number.MIN_SAFE_INTEGER;
times.sort((a, b) => {
if (a[0] < b[0]) return a[0] - b[0];
});
console.log(times)
for (let i=times[0][0]; i<times[times.length-1][1]; i++)
let cnt=0;
for (let j=0; j<times.length; j++) {
if (i >= times[j][0] && i < times[j][1]) cnt++;
console.log(cnt, i)
}
if (cnt > max) max=cnt;
}
answer=max;
return answer;
}
let arr=[[14, 18], [12, 15], [15, 20], [20, 30], [5, 14]];
console.log(solution(arr));
function solution(times){
let answer=Number.MIN_SAFE_INTEGER;
let T_line=[];
for (let x of times) {
T_line.push([x[0], 's']);
T_line.push([x[1], 'e']);
}
T_line.sort((a, b)=>{
if (a[0]===b[0]) return a[1].charCodeAt()-b[1].charCodeAt();
else return a[0]-b[0];
});
let cnt=0;
for (let x of T_line) {
if (x[1]==='s') cnt++;
else cnt--;
answer=Math.max(answer, cnt);
}
return answer;
}
...사실 쌤 풀이가 이해가 안됨;
내가 한 풀이는 예외값 지정이 안 되서 다른 예제에서 false가 뜰 확률이 높긴 한데... 조금 더 공부해보는걸로!