연습장/백준(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)를 출력한다.