알고리즘 문제 풀기

프로그래머스: [PCCP 기출문제] 1번 동영상 재생기 - javascript(단순 구현)

Fo_rdang 2024. 9. 12. 10:29
반응형

문제 출처 

https://school.programmers.co.kr/learn/courses/30/lessons/340213

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

정답 풀이 

단순 구현 문제이고, commands 반복문이 끝난 시간에도 오프닝 구간인지 확인해주는 것 정도만 신경써주면 된다. 

정답 코드 

function solution(video_len, pos, op_start, op_end, commands) {
    pos = transTime(pos)
    video_len = transTime(video_len)
    op_start = transTime(op_start) 
    op_end = transTime(op_end)
    for(let command of commands){
       pos = opening(pos, op_start, op_end)
       if(command === "next"){
            pos = next(pos, video_len)
       }
        else {
            pos = prev(pos)
        }
    }
     pos = opening(pos, op_start, op_end)
    return output(pos)
    
   function next(time,video_len){
       time += 10
       if(time > video_len) return video_len 
       else return time
   }
   function prev(time){
       time -= 10
       if(time < 0) return 0
       else return time 
   }
   function opening(time, op_start, op_end){
       if(time >= op_start && time <= op_end) return op_end 
       else return time 
   }
   function transTime(str){
      let [mm,ss] = str.split(":"); 
      let amount =  mm*60 + ss*1
      return amount
   }
   function output(time){
       let mm = parseInt(time/60)
       let ss = time%60
       mm = String(mm).padStart(2,0)
       ss = String(ss).padStart(2,0)
       return `${mm}:${ss}`
   }
}
//commands 반복문으로 명령어에 따라 함수 이동 
//next 함수 
//prev 함수 
//오프닝 구간인지 확인하는 함수 
//초로 다 변환하는 함수 
//마지막에 다시 맞는 형식으로 출력하는 함수
반응형