function solution(m, musicinfos) {
let musicArr = musicinfos.map((el)=>el.split(','))
//musicinfos를 조건 별로 나눠준다.
let musicScale = [];
//music의 음을 재생된 시간에 맞춰서 넣어줄 배열이다.
let answer =[];
for(let i=0;i<musicinfos.length;i++){
musicScale.push([musicArr[i][2]])
//일단 music의 이름을 넣어준다.
let hours = Number(musicinfos[i].slice(6,8))-Number(musicinfos[i].slice(0,2))
let minutes = Number(musicinfos[i].slice(9,11))-Number(musicinfos[i].slice(3,5))
let time = hours*60+minutes
musicScale[i].push(time)
// 재생 시간을 계산하여 넣어준다,
let musics = musicArr[i][3].split('')
for(let j=0;j<musics.length;j++){
if(musics[j]==='#'){
musics[j-1] = musics[j-1].toLowerCase();
}
}
musics = musics.filter((el)=>(el!=='#'))
//#이 붙은 음의 경우는 소문자로 바꿔주고, #은 없애준다.
if(time<=musics.length){
musicScale[i].push(musics.slice(0,time).join(''))
// 재생 시간이 음의 길이보다 짧은 경우는 그만큼 잘라서 넣어주고
}else{
let repeatedNum = Math.floor(time/musics.length)
let rest = time%musics.length
let newMusics = musics.join('').repeat(repeatedNum)
newMusics+=musics.slice(0,rest).join('')
musicScale[i].push(newMusics)
// 긴 경우는 그만큼 반복해서 넣어준다.
}
}
m=m.split('')
for(let i=0;i<m.length;i++){
if(m[i]==='#'){
m[i-1] = m[i-1].toLowerCase()
}
}
m = m.filter((el)=>(el!=='#')).join('')
//m도 #이 붙어있는 것은 소문자로 바꾸는 작업을 해준다.
let max = 0;
for(let i=0;i<musicScale.length;i++){
if(musicScale[i][2].includes(m)){
max = Math.max(musicScale[i][1],max)
answer.push(musicScale[i])
}
//answer에 m을 포함하는 애들만 골라서 넣어주고, answer가 2개 이상인 경우를 대비하여 max도 구해준다.
}
if(answer.length===0) return "(None)" //answer가 없다면 none을 반환한다.
if(answer.length===1) return answer[0][0] //1개라면 이름을 그대로 반환한다.
else{
answer = answer.filter((el)=>el[1]===max)
return answer[0][0] // 여러개가 있다면 max와 같은 애들만 찾아서, 그중의 첫번째 값을 반환한다.
}
}