방금 그곡 자바스크립트

HyosikPark·2020년 12월 1일
0

알고리즘

목록 보기
56/72
function solution(m,musicinfos) {
    m = m.replace(/(\w)#/g,(_,p) => p.toLowerCase())
    musicinfos = musicinfos.map(e => e.split(','))
    
    let musicInfo = musicinfos.map(e=> {
        e[3] = e[3].replace(/(\w)#/g,(_,p) => p.toLowerCase())
        let playMin = toMin(e[1]) - toMin(e[0]);
        let playMelody = toMelody(playMin,e[3]);
        return [e[2], playMelody]
    })
    
    let answer = musicInfo.reduce((acc,e) => {
        if(e[1].includes(m)) {
            if(acc.length == 0 || acc[1].length < e[1].length) return e
        }
        return acc
    },[])
    return answer.length ? answer[0] : '(None)' 
}

function toMin(time) {
    time = time.split(':');
    return time[0] * 60 + time[1] * 1;
}

function toMelody(min,melody) {
    return melody.repeat(min / melody.length) + melody.substr(0,min % melody.length);
}

핵심
재생된 시간동안의 멜로디를 구해 문자열 m이 포함되어 있는지 체크할 수 있다.
이때 #이 있는 경우 인덱스를 +1 더 차지하므로 계산을 용이하게 하기 위해 #이 붙은 문자들은 #과함께 소문자로 대체한다.

참고

https://after-newmoon.tistory.com/63

0개의 댓글