연습장/백준(BOJ) 문제풀이

[백준 1931] 회의실 배정 with Node.js

Tesseractjh 2021. 8. 24. 12:39

문제 링크

https://www.acmicpc.net/problem/1931

 

1931번: 회의실 배정

(1,4), (5,7), (8,11), (12,14) 를 이용할 수 있다.

www.acmicpc.net

풀이

const solve = (N, input) => {
  const schedule = input.map(time => time.split(' ').map(v => +v)).sort((a, b) => {
    if (a[1] === b[1]) {
      return a[0] - b[0];
    } else return a[1] - b[1];
  });
  let i = 0;
  let count = 0;
  let curEnd = 0;
  while (i < N) {
    const [ start, end ] = schedule[i++];
    if (start >= curEnd) {
      curEnd = end;
      count++;
    }
  }
  console.log(count);
};

const [N, ...input] = require('fs').readFileSync('/dev/stdin').toString().trim().split('\n');
solve(N, input);

회의가 끝나는 시각이 제일 이른 회의를 우선적으로 고르면 가장 많은 회의를 진행할 수 있다.

 

먼저 회의 스케줄을 회의 종료 시간이 이른 순서대로 정렬하고, 만약 회의 종료 시간이 같으면 회의 시작 시간이 더 이른 것을 우선적으로 배열한다.그 다음, 정렬된 회의 스케줄을 순회하면서회의 시작시간(start)이 직전에 진행한 회의의 종료시간(curEnd)과 같거나 늦을 경우 해당 회의를 진행시킨다.최종적으로 진행된 회의의 횟수(count)를 출력한다.