correctTime.js (7kyu 63)
Codewars 알고리즘 풀이
Problem
- You have to create a method that corrects a given time string.
- 시간 문자열을 올바르게 수정하는 메소드를 작성한다.
- Time-Format is european.
- 시간 형식은 유럽식이다.
For example:
“11:70:10” -> “12:10:10”
“19:99:99” -> “20:40:39”
“24:01:01” -> “00:01:01”
“52:01:01” -> “04:01:01”
Solution
function correctTime(str) {
if (str === '') return '';
if (!/\d\d:\d\d:\d\d/.test(str)) return null;
let arr = str.split(':');
arr = arr.map(i => parseInt(i));
arr[1] += Math.floor(arr[2] / 60);
arr[0] += Math.floor(arr[1] / 60);
arr[2] = arr[2] % 60;
arr[1] = arr[1] % 60;
arr[0] = arr[0] % 24;
arr = arr.map(i => (i < 10 ? '0' + i : i));
return arr.join(':');
}
correctTime(''); // ''
correctTime('null'); // null
correctTime('041010'); // null
correctTime('04;10;10'); // null
correctTime('04:10:1a'); // null
correctTime('11:70:10'); // 12:10:10
correctTime('19:99:99'); // 20:40:39
correctTime('24:01:01'); // 00:01:01
correctTime('52:01:01'); // 04:01:01
\d
: 숫자에 대응 (= [0-9])
test()
: 대응되는 문자열이 있는지 검색하고, true/false를 반환한다.
map()
: 배열 내 모든 element에 대해, 호출한 함수의 결과를 모아 새 배열로 반환한다.
parseInt()
: 문자열을 구문 분석하고, 정수를 반환한다.
Math.floor()
: 가장 가까운 정수를 반내림하고, 결과를 반환한다.
split()
: 문자열을 부분 문자열로 분할하고, 새 배열로 반환한다.
join()
: 배열의 모든 element를 결합하고, 새 문자열로 반환한다.