Notice
Recent Posts
Recent Comments
Link
HANA -J
프로그래머스 - 방금 그곡 본문
> 문제설명
첫 번째 예시에서 HELLO는 길이가 7분이지만 12:00부터 12:14까지 재생되었으므로 실제로 CDEFGABCDEFGAB로 재생되었고, 이 중에 기억한 멜로디인 ABCDEFG가 들어있다.
세 번째 예시에서 HELLO는 C#DEFGABC#DEFGAB로, WORLD는 ABCDE로 재생되었다. HELLO 안에 있는 ABC#은 기억한 멜로디인 ABC와 일치하지 않고, WORLD 안에 있는 ABC가 기억한 멜로디와 일치한다.
> 입출력 예시
"ABCDEFG" | ["12:00,12:14,HELLO,CDEFGAB", "13:00,13:05,WORLD,ABCDEF"] | "HELLO" |
"CC#BCC#BCC#BCC#B" | ["03:00,03:30,FOO,CC#B", "04:00,04:08,BAR,CC#BCC#BCC#B"] | "FOO" |
"ABC" | ["12:00,12:14,HELLO,C#DEFGAB", "13:00,13:05,WORLD,ABCDEF"] | "WORLD" |
> 코드
function solution(m, musicinfos) {
let answer =[];
let arr =[];
let answer1 ;
let time=[];
let c_music=[];
let c_title=[];
m = m.replace(/(C#)/g, 'c') //# 이 붙어있는 입력값을 문자열 한개로 변경
.replace(/(D#)/g, 'd')
.replace(/(F#)/g, 'f')
.replace(/(G#)/g, 'g')
.replace(/(A#)/g, 'a')
//입력값을 map 으로 각각의 배열에 넣어주기
const result = musicinfos.map((it, index)=>{
const [start, end, title, music] = it.split(',');
let h = Number(end.slice(0,2) - start.slice(0,2));
let mi = Number(end.slice(3) - start.slice(3));
let long = 60*h+mi; //재생시간 구하기
//console.log(long)
time.push(long);
c_music.push(music.replace(/(C#)/g, 'c')
.replace(/(D#)/g, 'd')
.replace(/(F#)/g, 'f')
.replace(/(G#)/g, 'g')
.replace(/(A#)/g, 'a'))
c_title.push(title)
})
for(let i =0; i<c_title.length; i++){
if(time[i]<c_music[i].length){ //재생시간이 음길이보다 짧을때
c_music[i] = c_music[i].slice(0, time[i]);
}else{
c_music[i] = c_music[i].repeat(time[i]/c_music[i].length)+ c_music[i].slice(0, time[i]%c_music[i].length)
}
if(c_music[i].includes(m)){
answer.push({title : c_title[i], time : time[i]});
}
}
answer.sort((a,b)=>{ //일치하는 음악을 담은 배열값 중에 재생시간 가장 긴거찾아야함
let A = a.time;
let B = b.time;
if(A>B) return -1;
else if(A<B) return 1;
else return 0;
})
if(answer.length ===0){
return '(None)';
}
return answer[0].title;
}
# 내가 이번 문제 풀고 꼭 기억해야하는 점
String.prototype.slice() => slice() 메소드는 문자열의 일부를 추출하면서 새로운 문자열을 반환한다.
문법
str.slice(beginIndex, endIndex)
728x90
'개발 > 알고리즘' 카테고리의 다른 글
백준[11399] - ATM (node.js) (0) | 2022.01.09 |
---|---|
백준[11866] - 요세푸스 문제 (0) | 2021.12.30 |
백준 문제 node.js 입력값 (0) | 2021.12.23 |
백준 [1011] - Fly me to the Alpha Centauri (node.js) (0) | 2021.12.23 |
백준[10250] ACM호텔(node.js) (0) | 2021.12.23 |
Comments