[HackerRank] - Time Conversion

sarang_daddy·2023년 2월 15일
0

문제 출처

문제

: 12시간 형식 -> 24시간 형식 시계로 변환하기.

예제

: 07:05:45PM -> 19:05:45

풀이 1

  1. 오전 오후를 구분하는 AM, PM을 먼저 구분하고
  2. 배열로 hh:mm:ss를 분리하고 각각 AM, PM에 맞는 시간으로 변경하고 문자열로 반환한다.
  3. 중복되는 코드가 많으니 개선해보자.
function timeConversion(s) {
  if (s[s.length - 2] === "A") {
    const sToArray = s.split(":");
    // AM인 경우에는 hh가 12인 경우만 '00'으로 바꿔주면 된다.
    sToArray[0] = ("" + (sToArray[0] % 12)).padStart(2, "0");
    sToArray[2] = sToArray[2].slice(0, 2);
    return sToArray.join(":");
  }

  if (s[s.length - 2] === "P") {
    const sToArray = s.split(":");
    // PM인 경우에는 hh에 12를 더해주면 된다. 기존 hh가 12면 변경하지 않는다.
    if (sToArray[0] !== "12") sToArray[0] = +sToArray[0] + 12;
    sToArray[2] = sToArray[2].slice(0, 2);
    return sToArray.join(":");
  }
}

풀이 2

function timeConversion(s) {
  const sToArray = s.slice(0, s.length - 2).split(":");

  if (s[s.length - 2] === "A") {
    sToArray[0] = ("" + (sToArray[0] % 12)).padStart(2, "0");
  } else {
    if (sToArray[0] !== "12") sToArray[0] = +sToArray[0] + 12;
  }

  return sToArray.join(":");
}

다른 사람 풀이

function timeConversion(s) {
  let AMPM = s.slice(-2);
  let timeArr = s.slice(0, -2).split(":");

  if (AMPM === "AM" && timeArr[0] === "12") {
    timeArr[0] = "00";
  } else if (AMPM === "PM") {
    timeArr[0] = (timeArr[0] % 12) + 12;
  }

  return timeArr.join(":");
}

알아가는 지식

  • s.slice(s.length - 2) = s.slice(-2)
profile
한 발자국, 한 걸음 느리더라도 하루하루 발전하는 삶을 살자.

0개의 댓글