728x90
INDEX
https://school.programmers.co.kr/learn/courses/30/lessons/155651
Solution
시간은 24시간 내로 주어지고 분 단위로 주어집니다.
좀 무식한 접근 방식을 선택했습니다. 분을 하나의 배열 원소로 변환하고 대실 시간만큼의 범위를 카운팅합니다.
24시간은 분으로 변환하면 24 X 60 = 1440 입니다.
const roomArr = new Array(60 * 24).fill(0);
처음 주어지는 시간이 15:00 ~ 17:00 라고 한다면 분으로 변환했을 때 900 ~ 1020 입니다.
이를 배열의 인덱스라고 생각해봅니다.
이제 다음 시간이 주어집니다. 16:40 ~ 18:20 이 주어지면 분으로 변환하면 1000 ~ 1100 입니다.
이 때 최소로 필요한 방의 개수는 2개입니다. 제일 숫자가 큰(카운팅이 많이 된) 값을 출력하면 정답입니다.
전체코드
function timeToMinute(time) {
return Number(time.split(":")[0]) * 60 + Number(time.split(":")[1]); //시간을 분으로 변환합니다.
}
function solution(book_time) {
const roomArr = new Array(60 * 24).fill(0);
let answer = 0;
for (let i = 0; i < book_time.length; i++) {
const [bTime, eTime] = book_time[i];
for (let j = timeToMinute(bTime); j < timeToMinute(eTime) + 10; j++) {
roomArr[j] += 1;
if (answer < roomArr[j]) answer = roomArr[j];
}
}
return answer;
}
'알고리즘 스터디' 카테고리의 다른 글
[Programmers] 마법의 엘리베이터 - Javascript (1) | 2023.10.15 |
---|---|
[Programmers] 미로탈출 - Javascript (1) | 2023.10.07 |
[Programmers] 무인도 여행 - Javascript (2) | 2023.10.02 |
[Programmers] 요격 시스템 - Javascript (0) | 2023.09.30 |
[Programmers] 카카오 인턴십키패드 누르기 - Javascript (0) | 2023.09.29 |