문제 설명 : https://school.programmers.co.kr/learn/courses/30/lessons/17683#
프로그래머스
SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
문제 요약 :
- 라디오에서 특정시간 동안 같은 노래가 반복된다.
- 네오가 기억하고 있는 일부 가사(음)를 이용해 가장 적절한 노래 제목을 찾아라
문제 풀이 시간 : 1시간
문제 성공 여부 : 성공
접근 방법(성공) :
- 라디오에서 방영된 총 재생 시간을 분 단위로 계산한다
- 해당 시간동안 들리는 노래 가사(음)를 하나의 문자열(s)로 만든다.
- m(네오가 기억하고 있는 가사)를 s에 포함되어 있는지를 찾는다.
- 단, #이 포함된 가사(음)은 소문자 등으로 변환시켜줘야 한다.
전체 코드(성공) :
function solution(m, musicinfos) {
let maxPlayTime = 0;
let ans = "(None)"; // 없을 경우 (None)을 반환한다.
m = convert(m); // A# -> a 와 같이 소문자로 변환해준다.
for(const music of musicinfos){
let [sTime, eTime, title, lyric] = music.split(",");
lyric = convert(lyric); // 라디오 음의 #도 소문자로 변환해준다.
const playTime = getPlayTime(sTime, eTime); // 총 재생 시간 계산
const playLyric = getPlayLyric(playTime, lyric); // 전체 가사 반환
if(!playLyric.includes(m)) continue; // 포함되지 않을 경우 패스
// 라디오의 재생시간이 더 많을 경우 갱신
if(maxPlayTime < playTime){
maxPlayTime = playTime;
ans = title;
}
}
return ans;
}
// 정규식을 활용하여 (문자)# 형태를 소문자로 변환해준다.
const convert = (s) => {
return s.replace(/(\w)#/g, (_,p)=> p.toLowerCase());
}
// 총 상영시간에 매칭되는 가사를 만든다.
const getPlayLyric = (playTime, lyric) => {
let playLyric = "";
for(let min=0; min<playTime; min++){
playLyric += lyric[min % lyric.length];
}
return playLyric;
}
// 시작시간, 종료시간을 받고 상영시간을 반환한다.
const getPlayTime = (sTime, eTime) => {
const [sHour, sMin] = sTime.split(":").map(Number);
const [eHour, eMin] = eTime.split(":").map(Number);
const playTime = (eHour * 60 + eMin) - (sHour * 60 + sMin);
return playTime;
}
원래는 정규식 말고 노가다로 했었으나, 아래의 블로그를 참고하여 코드를 개선하였다
[프로그래머스] JavaScript Lv2 - [3차] 방금그곡(17683)
개요문제 이름: [3차] 방금그곡 (17683) 문제 링크: https://school.programmers.co.kr/learn/courses/30/lessons/17683플랫폼: 프로그래머스알고리즘 분류: 일반소요 시간: 7시간 문제 전문설명입출력 문제 풀이해
valur.tistory.com
'코테 > 프로그래머스' 카테고리의 다른 글
| [프로그래머스] 오픈채팅방 - Javascript (4) | 2025.08.17 |
|---|---|
| [프로그래머스] 디펜스 게임 - Javascript (4) | 2025.08.15 |
| [프로그래머스] N-Queen - Javascript (3) | 2025.08.05 |
| [프로그래머스] 리코쳇 로봇 - Javascript (6) | 2025.07.31 |
| [프로그래머스] 주식가격 - java (2) | 2025.05.21 |