Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- javascript
- 배열같은배열아닌너
- 유사배열
- 1568
- 2667
- 9461
- 함수 선언문
- 함수 이놈
- setTiemOut
- 함수 parmater
- Async/Await
- 백준
- 1543
- 1904
- 탐욕 알고리즘
- 11399
- 비동기처리
- 1931
- 호이스팅
- 1668
- 함수 arguments
- baekjoon
- 1236
- html5
- 11047
- event loop
- 동적계획법
- 렉시컬 스코프
- 자류구조
- 1302
Archives
- Today
- Total
두치의 개발공부
BaekJoon_1931(회의실 배정) 본문
문제풀이
하나의 회의실에 여러개의 회의 일정이 있고 이 일정을 최대로 잡을 수 있도록 한다.
회의를 최대로 할려면 짧은 회의를 많이 잡는게 효율적이다.
등록된 회의를 아래 기준으로 정렬한다.
1. 제일 빠르게 끝나는 회의 순서
2. 끝나는 시간이 같을 시에는 시작 시간이 빠른 순서
이렇게 정렬하여 순서대로 회의를 잡는다.
시작 시간이 이전 종료 시간보다 나중이면 새로운 회의이다.
코드
const answer = ([n, ...arr]) => {
const times = arr.map((list) => list.split(" ").map(Number));
// 가장 빠르게 끝나는 순 => 끝나는 시간이 같다면 빠르게 시작하는 순
times.sort((a, b) => {
if (a[1] === b[1]) {
return a[0] - b[0];
} else {
return a[1] - b[1];
}
});
let answer = 0;
let beforeEndTime = 0;
for (const data of times) {
const startTime = data[0];
const endTime = data[1];
// 시작시간이 이전의 종료시간보다 같거나 크면 새로운 회의
if (startTime >= beforeEndTime) {
answer++;
beforeEndTime = endTime;
}
}
console.log(answer);
};
const input = [];
require("readline")
.createInterface(process.stdin, process.stdout)
.on("line", (line) => {
input.push(line);
})
.on("close", () => {
answer(input);
process.exit();
});
코드는 깃헙에서도 확인 할 수 있습니다.🤗
https://github.com/duduchi/Algorithm/tree/main/Greedy
GitHub - duduchi/Algorithm: 알고리즘 이론 및 구현 소스 정리 프로젝트 입니다.
알고리즘 이론 및 구현 소스 정리 프로젝트 입니다. Contribute to duduchi/Algorithm development by creating an account on GitHub.
github.com
'알고리즘' 카테고리의 다른 글
BaekJoon_1543(문서 검색) (0) | 2022.06.23 |
---|---|
BaekJoon_1541(잃어버린 괄호) (0) | 2022.05.11 |
BaekJoon_11047(동전) (0) | 2022.05.09 |
BaekJoon_11399(ATM) (0) | 2022.05.06 |
BaekJoon_1932(정수 삼각형) (0) | 2022.05.03 |