function solution(
video_len, // 동영상길이
pos, // 직전 재생위치
op_start, // 오프닝 시작 시간
op_end, // 오프닝 끝나는 시간
commands // 사용자의 입력
) {
// 시간 > 초 변경 / 리턴 - 초
const transTime = (time) => {
const [m, s] = time.split(':');
return m * 60 + s * 1;
}
// 초 > 시간 변경 / 리턴 - 시간
const secToTime = (second) => {
const m = parseInt(second / 60);
const s = second % 60;
return String(m).padStart(2,0) + ':' + String(s).padStart(2,0);
}
// 오프닝 여부 체크 / 리턴 - 시간
const opCheck = (time) => {
if (transTime(op_start) <= transTime(time) && transTime(time) <= transTime(op_end)) return op_end
else return time
}
// 이전으로 이동 / 리턴 - 초
const goPrev = (time) => {
return transTime(time) - 10 < 0 ? 0 : transTime(time) - 10;
}
// 다음으로 이동 / 리턴 - 초
const goNext = (time) => {
return transTime(time) + 10 > transTime(video_len) ? transTime(video_len) : transTime(time) + 10;
}
let time = pos;
for (let co of commands) {
time = opCheck(time) // 처음에도 오프닝 여부 체크
if (co === 'prev') time = secToTime(goPrev(time))
else time = secToTime(goNext(time))
time = opCheck(time)
}
return time;
}
반응형
'🔥 Javascript > 🔸 알고리즘' 카테고리의 다른 글
Javascript ) 프로그래머스 - [PCCP 기출문제] 1번 / 붕대 감기 (0) | 2024.09.22 |
---|---|
Javascript) 프로그래머스 - 가장 많이 받은 선물 (0) | 2024.09.22 |
JavaScript) 프로그래머스 가장 가까운 같은 글자 (0) | 2023.02.01 |
JavaScript) 프로그래머스 크기가 작은 부분문자열 (0) | 2023.01.29 |
JavaScript) 프로그래머스 개인정보 수집 유효기간 (0) | 2023.01.29 |