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

// test.txt
11
1 4
3 5
0 6
5 7
3 8
5 9
6 10
8 11
8 12
2 13
12 14
최대한 많은 회의를 열려면 종료시간이 빠른 회의 순으로 정렬 후 끝나자마자 바로 시작 가능한 회의의 개수를 세면 된다.
sol1
let [num,...input] = require('fs').readFileSync('test.txt').toString().trim().split('\n');
arr = input.map(v => v.split(' ').map(i => Number(i)))
let time = arr.sort((a,b) => a[1] - b[1]||a[0]-b[0])
let end = 0;
let answer = 0;
time.forEach((e) => {
if(end <=e[0]) {
answer++;
end= e[1];
};
});
console.log(answer); //4
오름차순 정렬시 회의가 열리자마자 끝날 경우까지 생각해서 정렬해줘야 한다.
let time = arr.sort((a,b) => a[1] - b[1]||a[0]-b[0])
// 정렬되는 내용은 같다
let time = arr.sort((a,b) => a[1] === b[1] ? a[0]-b[0] : a[1]-b[1])
for문을 사용해 풀려면
let [num,...input] = require('fs').readFileSync('test.txt').toString().trim().split('\n');
arr = input.map(v => v.split(' ').map(i => Number(i)))
let time = arr.sort((a,b) => a[1] - b[1]||a[0]-b[0])
let end = 0;
let answer = 0;
// foreach 이하를 for문으로 변경
for(let i=0;i<num;i++) {
if(end <=time[i][0]) {
answer++;
end = time[i][1];
}
}
'Study > Algorithm' 카테고리의 다른 글
[BEAKJOON / node.js] 13305 주유소 (0) | 2022.05.28 |
---|---|
<BEAKJOON / node.js> 11399 ATM (0) | 2022.05.24 |
<BEAKJOON / node.js> 11047 동전 0 (0) | 2022.05.22 |
<programmers / JavaScript> 로또의 최고 순위와 최저 순위 (0) | 2022.05.18 |
[programmers / JavaScript] K번째 수 (0) | 2022.05.06 |