문제 링크
문제 풀이
구현의 성격이 강하다.
단 문제의 조건을 놓치지 않고 필요한 함수를 정의해야한다.
문제의 C#, D# 같이 #이 붙는 경우 문자열은 2개이지만 1개로 계산해야하므로
소문자 c, 소문자 d등으로 대체했다.
전체 코드
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
| const converter = (input) => input .split("") .reduce( (acc, cur) => cur === "#" ? acc.concat(acc.pop().toLowerCase()) : acc.concat(cur), [] ) .join("");
const timer = (start, end) => parseInt(end.slice(0, 2)) * 60 - parseInt(start.slice(0, 2)) * 60 + parseInt(end.slice(3, 5)) - parseInt(start.slice(3, 5));
function solution(m, musicinfos) { m = converter(m);
musicinfos = musicinfos .map((v) => (v = v.split(","))) .map((v) => [timer(v[0], v[1]), v[2], converter(v[3])]) .sort((a, b) => b[0] - a[0]);
for (let v of musicinfos) { let temp = ""; for (let i = 1; i <= v[0] / v[2].length; i++) { temp += v[2]; } temp += v[2].slice(0, v[0] % v[2].length); if (temp.indexOf(m) > -1) return v[1]; } return "(None)"; }
|