티스토리 뷰

반응형

문제

현수는 다음 달에 결혼을 합니다. 현수는 결혼식 피로연을 장소를 빌려 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;
}

 

반응형
반응형
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31