Develop/백준 코딩테스트
백준 코딩테스트 회의실배정 1931 자바스크립트 node.js
codeGray
2022. 6. 30. 16:41
반응형

정답
//let input = require('fs').readFileSync('/dev/stdin').toString();
const input = require('fs').readFileSync('./input.txt').toString().trim().split('\n');
let count = Number(input.shift());
let list = [];
for(let i of input){
list.push(i.split(' ').map(n => Number(n)));
}
solution(count, list);
function solution(count, list){
list.sort(function(a, b){
//끝나는 시간이 같으면 시작 시간 오름차순 정렬
if(a[1] === b[1]) return a[0] - b[0]
else return a[1] - b[1]
});
let result = 1;
let temp = list[0][1]; //처음 회의 종료시간
for( let i=1 ; i < count; i++){
if(temp <= list[i][0]){
temp = list[i][1];
result += 1;
}
}
console.log(result);
}
풀이
끝나는 시간 순으로 정렬하고 끝나는 시간이 같다면 시작 시간을 비교해서 오름차순으로 정렬한다.
3 8
8 10
12 12
11 12
9 14
위와 같을 경우 8 10 -> 12 12 먼저 계산해버리면 11 12가 성립이 안된다.
8 10 -> 11 12-> 12 12 (성립)
그리고 처음 회의 시작시간과 끝시간을 저장해서 비교하고 그 다음부터는
회의 끝시간 - 다음 회의시작시간을 계산하고
다음 회의 끝시간과 다시 그다음 시작시간을 계산한다. (반복)
어렵다;;
반응형