프로그래머스[Level 2] 방금그곡

bkboy·2022년 6월 25일
0

문제

링크

풀이

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];
}

아직 해결 못 했다. 특정 케이스들에서 런타임 오류가 난다.
테스트 케이스는 전부 통과했다.

profile
음악하는 개발자

0개의 댓글