문제 이름 : [1차] 셔틀버스
<<< 문제 내용 >>>
function solution(n, t, m, timetable) {
let answer = '';
let bustime = [];
// 버스 시간을 횟수에 맞춰 분 단위로 저장
for(let i=0; i<n; i++){
bustime.push(540+ (i*t));
}
// 시계형 수를 분단위로 변경하는 함수
const convertTime = (clock) => {
let temp = clock.split(':').map(Number);
return temp[0]*60+temp[1];
}
// 분단위 수를 시계형 수로 변경
const convertClock = (time) => {
let Hour = String(Math.floor(time/60));
let Minute = String(time%60);
let str = Hour.padStart(2, '0')+':'+Minute.padStart(2, '0');
return str
}
// timetable의 값들을 계산하기 편하게 분단위로 변경함
timetable.map((el, i)=> timetable[i] = convertTime(el));
// 앞부터 차근차근 버스태워 보내기위해 시간순 정렬
timetable.sort((a, b)=> a-b);
// 각 버스 시간마다 인원수에 맞게 사람들을 보내주기
// 마지막 버스일때만 고려하면 게으르게 보낼 수 있음
// 만약 버스시간이 timetable[0]보다 작다면 마지막 버스일 때는
// 마지막 버스시간에 맞춰주면 된다.
bustime.forEach((el,i)=>{
if(i===bustime.length-1){
if(m<=timetable.length){
if(el<timetable[m-1]) answer = el;
else answer = timetable[m-1]-1;
}else{
answer = el;
}
}else{
for(let j=0; j<m; j++){
if(el<timetable[0] || timetable.length===0) break;
timetable.shift();
}
}
});
return convertClock(answer);
}
도움이 되셨다면 공감 부탁드립니다.