반응형
문제 확인
문제 풀이
주어진 시간들을 각각 초단위로 변경해준 후에 "next", "prev"에 따라 현재 시간을 정해주었다.
function solution(video_len, pos, op_start, op_end, commands) {
let curr = pos.split(":").map(x => parseInt(x));
const length = video_len.split(":").map(x => parseInt(x));
const start = op_start.split(":").map(x => parseInt(x));
const end = op_end.split(":").map(x => parseInt(x));
const toSeconds = ([start, end]) => start * 60 + end;
// 각각 시간들을 초 단위로 변경
let currSecs = toSeconds(curr);
const lengthSecs = toSeconds(length);
const startSecs = toSeconds(start);
const endSecs = toSeconds(end);
// 현재 시간이 오프닝 시작과 오프닝 끝 시간의 사이인 경우, 현재 시간을 오프닝 끝 시간으로 설정
if(currSecs >= startSecs && currSecs <= endSecs) {
currSecs = endSecs;
}
for(const x of commands){
// "next"인 경우
if(x === "next") {
currSecs += 10;
if(currSecs > lengthSecs) currSecs = lengthSecs;
} else { // "prev"인 경우
currSecs -= 10;
if(currSecs < 0) currSecs = 0;
}
// 현재 시간이 오프닝 시작과 오프닝 끝 시간의 사이인 경우, 현재 시간을 오프닝 끝 시간으로 설정
if(currSecs >= startSecs && currSecs <= endSecs) {
currSecs = endSecs;
}
}
// "YY:MM" 형식으로 변형하여 값을 반환해줌
return [Math.floor(currSecs / 60) , currSecs % 60].map(x => x<10? "0" + x : x).join(":");
}
반응형
'자료구조 & 알고리즘' 카테고리의 다른 글
프로그래머스 키패드 누르기 - 자바스크립트 풀이 (0) | 2024.10.20 |
---|---|
맨해튼 거리 Manhattan distance (0) | 2024.10.20 |
[코딩테스트] 프로그래머스 - 롤케이크 자르기 ( 자바스크립트 풀이 ) (1) | 2024.02.03 |
[코딩테스트 - 해시] 프로그래머스 - 전화번호 목록 ( 자바스크립트 풀이 ) Map 사용 (3) | 2024.01.31 |
[코딩테스트] 프로그래머스 - n^2 배열 자르기 ( 자바스크립트 풀이 ) (0) | 2024.01.21 |