[알고리즘] 코딩테스트 연습 - [3차] 방금그곡

Subin·2021년 10월 4일
0

알고리즘

목록 보기
1/4
const convertSharp = (s) => {
  let result = s.split('');
  for (let i = 0; i < result.length; i++) {
    if (result[i] == '#') {
      result.splice(i, 1);
      let charCode = result[i - 1].charCodeAt() + 32;
      result[i - 1] = String.fromCharCode(charCode);
    }
  }

  return result;
};

const getSongsDuration = (t1, t2) => {
  return (
    (+t2.slice(0, 2) * 60 + +t2.slice(-2)) -
    (+t1.slice(0, 2) * 60 + +t1.slice(-2))
  );
};

const getFullSounds = (d, s) => {
  let cS = convertSharp(s);
  let result = [];
  let [i, j] = [-1, -1];
  if (cS.length >= d) {
    for (let k = 0; k < d; k++) {
      result.push(cS[k]);
    }
    return result.join('');
  }
  while (result.length < d) {
    if (j == cS.length - 1) {
      j = -1;
    }
    i++;
    j++;
    result.push(cS[j]);
  }
  return result.join('');
};

function solution(m, musicinfos) {
  var answer = '';
  var cM = convertSharp(m).join('');
  while (musicinfos.length) {
    let [t1, t2, title, sound] = musicinfos.shift().split(',');
    let duration = getSongsDuration(t1, t2);
    let fullSounds = getFullSounds(duration, sound);
    if (fullSounds.includes(cM)) {
      if (answer.length == 0) answer = { title, duration };
      else if (answer.duration < duration) {
        answer = { title, duration };
      }
    }
  }
  return answer.length !== 0 ? answer.title : '(None)';
}
profile
정확하게 알고, 제대로 사용하자

0개의 댓글