티스토리 뷰
반응형
문제
현수는 다음 달에 결혼을 합니다. 현수는 결혼식 피로연을 장소를 빌려 3일간 쉬지 않고 하려고 합니다. 피로연에 참석하는 친구들 N명의 참석하는 시간정보를 현수는 친구들에게 미리 요구했습니다. 각 친구들은 자신이 몇 시에 도착해서 몇 시에 떠날 것인지 현수에게 알려주었습니다. 현수는 이 정보를 바탕으로 피로연 장소에 동시에 존재하는 최대 인원수를 구하여 그 인원을 수용할 수 있는 장소를 빌리려고 합니다. 여러분이 현수를 도와주세요. 만약 한 친구가 오는 시간 13, 가는시간 15라면 이 친구는 13시 정각에 피로연 장에 존재하는 것이고 15시 정각에는 존재하지 않는다고 가정합니다.
입력 예제
14 18
12 15
15 20
20 24
5 14
출력 예제
2
풀이
각각의 start 시간과 end 시간을 쪼개서 오름차순 정렬 하고, start면 +1 end면 -2 해준다.
function solution(arr) {
let answer = Number.MIN_SAFE_INTEGER;
let tl = [];
// start, end 분리
for(let x of arr) {
tl.push([x[0], 's']);
tl.push([x[1], 'e']);
}
tl.sort((a, b) => {
// 시간이 같으면 s
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 tl) {
if (x[1] === 's') cnt++;
else cnt--;
answer = Math.max(answer, cnt); // 최대 인원
}
return answer;
}
반응형
'Data Structure & Algorithm' 카테고리의 다른 글
[알고리즘-JS] 뮤직비디오 - 결정 알고리즘(이분 검색) (0) | 2022.05.05 |
---|---|
[알고리즘-JS] 이분 검색 (0) | 2022.05.05 |
[알고리즘-JS] 회의실 배정 (0) | 2022.05.05 |
[알고리즘-JS] 좌표 정렬 (0) | 2022.05.05 |
[알고리즘-JS] 캐시 정책 (0) | 2022.05.04 |