1Day 1Practice

[codewars] Human Readable Time

Bittersweet- 2022. 7. 7. 11:09
728x90

Instruction.

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)

You can find some examples in the test fixtures.

음이 아닌 정수(초)를 입력받아 사람이 읽을 수 있는 형식(HH:MM:SS)으로 반환하는 함수를 작성해라.

  • HH = 시간, 2자리 숫자, 범위 00-99
  • MM = 분, 2자리 숫자, 범위 00-59
  • SS = 초, 2자리 숫자, 범위 00-59

최대 입력값은 359999(결과값 99:59:59)를 초과하지 않는다.

테스트에서 몇가지 예를 확인할 수 있다.


Solution.

function humanReadable(seconds) {
  const h = parseInt(Math.floor(seconds / 3600));
  const m = parseInt(Math.floor((seconds % 3600) / 60));
  const s = seconds - (h * 3600) - (m * 60);
  
  return (h < 10 ? ( h === 0 ? "00" : "0" + h) : h) + ":" + (m < 10 ? ( m === 0 ? "00" : "0" + m) : m) + ":" + (s < 10 ? ( s === 0 ? "00" : "0" + s) : s);
}

 

* parseInt(문자열, 진수) - 문자열 인자를 파싱해 특정 진수의 정수를 반환(진수는 optional)

* Math.floor(숫자) - 주어진 숫자와 같거나 작은 정수 중에서 가장 큰 전수를 반환 

 

Best Solution.

function humanReadable(seconds) {
  var pad = function(x) { return (x < 10) ? "0"+x : x; }
  
  return pad(parseInt(seconds / (60*60))) + ":" +
         pad(parseInt(seconds / 60 % 60)) + ":" +
         pad(seconds % 60)
}