문제
https://school.programmers.co.kr/learn/courses/30/lessons/155651
풀이
- 문자열 시간을 숫자로 바꿔준다.
- 체크인 시간, 체크아웃 시간 + 청소시간을 저장해둔다.
- 입실 시간이 빠른 순서대로 정렬한다.
- room 배열을 선언한 후, 순회하면서 체크인 하려는 시간이 어떤 방의 체크아웃+청소시간보다 늦은 경우 입실시키고 그렇지 않은 경우에는 새로운 방을 생성(push)한다.
- 사용한 방의 개수(room.length)를 출력한다.
코드
function solution(book_time) {
let arr = [];
book_time.forEach((time) => {
let checkIn = stringToTime(time[0]);
let chectOut = stringToTime(time[1]);
// 체크인, 체크아웃 + 청소시간 배열에 저장
arr.push([checkIn, chectOut + 10]);
});
// 입실시간 오름차순으로 정렬하기
arr.sort((a, b) => a[0] - b[0]);
let room = [arr[0][1]];
for (let i = 1; i < arr.length; i++) {
for (let j = 0; j < room.length; j++) {
// 입실할 수 있는 조건이면
if (room[j] <= arr[i][0]) {
// 입실하고
room[j] = arr[i][1];
// 다음 손님으로 넘어가기
break;
} else {
// 입실할 수 없고 모든 방을 조회했다면
if (j === room.length - 1) {
// 새로운 방을 생성하고
room.push(arr[i][1]);
// 다음 손님으로 넘어가기
break;
}
}
}
}
// 사용된 방의 개수를 출력
return room.length;
}
// 문자열을 시간으로 변환하기
const stringToTime = (str) => {
const [hour, minute] = str.split(":");
return parseInt(hour) * 60 + parseInt(minute);
};
'Algorithm > Programmers' 카테고리의 다른 글
[Lv.2] 미로 탈출 - JavaScript (0) | 2023.04.11 |
---|---|
[Lv.2] 양궁 대회 - JavaScript (0) | 2023.03.28 |
[Lv.2] 프린터 - JavaScript (0) | 2023.03.21 |
[Lv.2] 피로도 - JavaScript (0) | 2023.03.18 |
[Lv.2] 이진변환 반복하기 -JavaScript (0) | 2023.03.12 |
댓글