새소식

Programmers

[Programmers] [1차] 셔틀버스 문제 - (javascript)

  • -
728x90
문제 이름 : [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);
}

 

 

도움이 되셨다면 공감 부탁드립니다.

Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.