const checkTime = (start, end) => {
let startTime = start.split(":").map(Number);
let endTime = end.split(":").map(Number);
let hour = +endTime[0] - +startTime[0];
let minute = +endTime[1] - +startTime[1];
return hour * 60 + minute;
};
const makeSongForm = (songForm, time) => {
const length = songForm.length;
return songForm.repeat(time / length) + songForm.slice(0, time % length);
};
function solution(m, musicinfos) {
// 문자 + #의 조합을 찾아서, toLowerCase()
// 조표가 붙은 음표와 아닌 음표를 구분해주기 위해서!
const _m = m.replace(/(\D)#/g, (s) => s.toLowerCase());
const arr = musicinfos.map((e, i) => {
const info = e.split(","); // 시작시, 종료시, 제목, 형태
const songForm = info[3].replace(/(\D)#/g, (s) => s.toLowerCase());
const time = checkTime(info[0], info[1]);
const newSongForm = makeSongForm(songForm, time);
console.log(newSongForm);
if (newSongForm.indexOf(_m) >= 0) {
return [info[2], time, i];
}
});
if (!arr.length) {
return "(None)";
}
arr.sort((a, b) => {
if (b[1] === a[1]) {
return a[2] - b[2];
}
return b[1] - a[1];
});
return arr[0][0];
}
아직 해결 못 했다. 특정 케이스들에서 런타임 오류가 난다.
테스트 케이스는 전부 통과했다.