문제 68 : 버스 시간표

less than 1 minute read

문제 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