알고리즘 - [3차] 방금그곡

HoJeong Im·2021년 9월 25일
0

Break_Algo

목록 보기
23/46

문제

  • 링크

  • 문제의 조건을 잘 읽고 풀면 되는 문제

코드

function solution(m, musicinfos) {
    let answer = [];
    
    for(let i = 0; i < musicinfos.length; i++){
        let target = musicinfos[i].split(",");
        let startTime = target[0];
        let endTime = target[1];
        let title = target[2];
        let info = target[3];
        
        let start = startTime.split(":");
        let startHour = parseInt(start[0]);
        let startminute = parseInt(start[1]);
        let end = endTime.split(":");
        let endHour = parseInt(end[0]);
        let endminute = parseInt(end[1]);
        let infoArr = info.split(/([A-Z]#*)/).filter(e=>e!='');
        let arr = [];
        //console.log(infoArr)
        //console.log(startminute, endminute)
        let lenCheck = (endHour-startHour) * 60 + (endminute-startminute)
        for(let j = 0 ; j < lenCheck ; j++){
            //console.log(j%infoArr.length)
            arr.push(infoArr[j%infoArr.length]);
        } 
        let targetArr = m.split(/([A-Z]#*)/).filter(e=>e!='');
        
        for(let j = 0; j < infoArr.length ; j++){
            let val = arr.slice(j,j+targetArr.length).join("");
            if(val === m){
                answer.push([lenCheck, title, i]);
                break;
            }
        }
    }
    answer.sort((a,b)=>{
        if(a[0]!==b[0]){
            return b[0]-a[0]
        }
        else {
            return a[2]-b[2];
        }
    });
    
    if(answer.length===0){
        return '(None)';
    }
    
    return answer[0][1];
}

회고

  • 문제 한 줄 한 줄 꼼꼼히 읽어서 빠트리는 조건을 최소화하자
profile
꾸준함이 제일 빠른 길이었다

0개의 댓글