// 치환 함수 - 빼먹지 않도록 주의
function getNotes(info) {
return info
.replaceAll("A#", "a")
.replaceAll("C#", "c")
.replaceAll("D#", "d")
.replaceAll("F#", "f")
.replaceAll("G#", "g");
}
function solution(m, musicinfos) {
m = getNotes(m);
if (candidates.length === 0) return "(None)";
// 재생 시간 내림차순 정렬
else return candidates.sort((a, b) => b[1] - a[1])[0][0];
}
### ✅ 2차 풀이: 특정 함수 개선
1. 재생 시간 구하는 함수: 직접 계산 -> Date 빌트인 객체 사용해 계산
2. 재생 시간에 따라 조정된 악보 구하기 -> Math 빌트인 객체 사용해 개선
```javascript
function solution(m, musicinfos) {
m = m.replace(/[A-Z]#/g, (v) => v[0].toLowerCase());;
const candidates = [];
musicinfos.forEach((info) => {
const [start, end, name, note] = info.split(",");
const playTime =
(new Date(`1970-01-01 ${end}:00`) - new Date(`1970-01-01 ${start}:00`)) / 60000;
let playNotes = note.replace(/[A-Z]#/g, v => v[0].toLowerCase()); // 함수 형태로 작성 가능
playNotes = playNotes.repeat(Math.ceil(playTime / playNotes.length)).slice(0, playTime)
if (playNotes.includes(m)) candidates.push([name, playTime]);
});
if (candidates.length === 0) return "(None)";
// 재생 시간 내림차순 정렬
else return candidates.sort((a, b) => b[1] - a[1])[0][0];
}
⭐ 성찰
❓ 문제 상황
방금 그 곡
👨💻 문제 해결
✅ 1차 풀이: replaceAll을 이용한 치환
/[ABCDEF]#/
형태의 패턴이 있다면 소문자로 치환해/[ABCDEF]#/
을 한 글자로 표현.[노래이름, 재생시간]
형태로 추가.(None)
반환. 있으면 재생 시간에 따라 내림차순 정렬해 첫 요소의 노래 이름 반환.function getPlayTime(start, end) { const [sHH, sMM] = start.split(":").map(Number); const [eHH, eMM] = end.split(":").map(Number); return eHH 60 + eMM - (sHH 60 + sMM) + 1; // 종료 시간까지 포함 }
// 치환 함수 - 빼먹지 않도록 주의 function getNotes(info) { return info .replaceAll("A#", "a") .replaceAll("C#", "c") .replaceAll("D#", "d") .replaceAll("F#", "f") .replaceAll("G#", "g"); }
function solution(m, musicinfos) { m = getNotes(m);
const candidates = []; musicinfos.forEach((info) => { const [start, end, name, note] = info.split(","); const playTime = getPlayTime(start, end); let playNotes = getNotes(note);
});
if (candidates.length === 0) return "(None)"; // 재생 시간 내림차순 정렬 else return candidates.sort((a, b) => b[1] - a[1])[0][0]; }
✅ 3차 풀이: 특정 함수 개선