문제 68 : 버스 시간표
문제 68 : 버스 시간표
// 버스 시간표와 현재 시간이 주어졌을 때 버스 도착 시간이 얼마나 남았는지 알려주는 프로그램을 만들어라.
// 버스 시간표와 현재 시간이 입력으로 주어진다.
// 출력 포맷은 "00시00분" 입니다
// 만약 1시간 3분이 남았다면 "01시간 03분"으로 출력해야 합니다.
// 버스 시간표에 현재 시간보다 이전인 버스가 있다면 "지나갔습니다"라고 출력합니다.
// 입력
// ["12:30", "13:20", "14:13"]
// "12:40"
// 출력
// ['지나갔습니다', "00시간 40분", "01시간 33분"]
풀이 1
function solution(timetable, time) {
let [hour, min] = time.split(":").map((item) => Number(item));
const currentTime = hour * 60 + min;
let result = timetable.map((time) => {
let [hour, min] = time.split(":").map((item) => Number(item));
const busTime = hour * 60 + min;
if (busTime < currentTime) {
return "지나갔습니다.";
} else {
const diff = busTime - currentTime;
const hour = Math.floor(diff / 60);
const min = diff % 60;
return `${hour < 10 ? `0${hour}` : hour}시간 ${
min < 10 ? `0${min}` : min
}분`;
}
});
return result;
}
console.log(solution(["12:30", "13:20", "14:13"], "12:40"));
주어진 시간을 분으로 바꿔서 비교했다.
다른 풀이법은 Date 객체를 이용해서 getTime 메소드를 통해서 밀리세컨드를 비교해서 값을 내는 방법도 있다.
Leave a comment