문제 링크
https://www.acmicpc.net/problem/1931
풀이
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)를 출력한다.
'연습장 > 백준(BOJ) 문제풀이' 카테고리의 다른 글
[백준 11052] 카드 구매하기 with Python (0) | 2021.08.25 |
---|---|
[백준 1541] 잃어버린 괄호 with Node.js (0) | 2021.08.24 |
[백준 1149] RGB거리 with Node.js (0) | 2021.08.23 |
[백준 2156] 포도주 시식 with Node.js (0) | 2021.08.19 |
[백준 15656] N과 M (7) with Node.js (0) | 2021.08.19 |