CodeWars 코딩 문제 2021/04/27 - Human Readable Time

이호현·2021년 4월 27일
0

Algorithm

목록 보기
113/138

[문제]

Write a function, which takes a non-negative integer (seconds) as input and returns the time in a human-readable format (HH:MM:SS)

  • HH = hours, padded to 2 digits, range: 00 - 99
  • MM = minutes, padded to 2 digits, range: 00 - 59
  • SS = seconds, padded to 2 digits, range: 00 - 59

The maximum time never exceeds 359999 (99:59:59)

(요약) 주어진 숫자를 시간:분:초 로 나타내라.

[풀이]

function humanReadable(seconds) {
  const timeArr = [];

  for(let i = 0; i < 3; i++) {
    if(seconds >= 60) {
      timeArr.unshift(timeArr.length === 2 ? seconds : seconds % 60);
      seconds = timeArr.length < 3 ? (seconds / 60|0) : seconds;
    }
    else {
      timeArr.unshift(seconds);
      seconds = 0;
    }
  }

  return timeArr.map(n => `${n}`.padStart(2, 0)).join(':');
}

반복문은 3번만 돌면서 배열에 push하게 하려고한다.

if문으로 숫자가 60이 넘어가면 현재 숫자와 배열요소 개수를 확인해서 unshift하고, 몫을 seconds에 넣는다.

60미만이면 그냥 배열에 0을 unshift하고, seconds는 0으로 만든다.

마지막에 배열 요소마다 2자리로 표현되게 만들고, join으로 연결.

profile
평생 개발자로 살고싶습니다

0개의 댓글