몽땅뚝딱 개발자

[프로그래머스 | Javascript] Lv.1 동영상 재생기 본문

Development/알고리즘

[프로그래머스 | Javascript] Lv.1 동영상 재생기

레오나르도 다빈츠 2024. 12. 2. 21:51

 

 

처음 구구절절 Date로 풀다가 테스트케이스 3번이 해결되지않아서 힌트를 봤더니 prev를 한 뒤 현재 이동한 시간이 오프닝 시간 내에 있는지 검사했어야 헸다. Date로 하다보니 너무 코드가 구구절절했지만 푼게 아까워서 집착하다가.... 결국 버리고 새롭게 품..^0 ^

 

const prev = (time) => {
  time -= 10
  return time < 0 ? 0 : time
}

const next = (time, videoLength) => {
  time += 10
  return time > videoLength ? videoLength : time
}

const checkOpeningTime = (time, openingStartTime, openingEndTime) => {
  return time >= openingStartTime && time <= openingEndTime ? openingEndTime : time
}

const getTotalSeconds = (str) => {
  const [mm, ss] = str.split(':')
  return mm * 60 + ss * 1
}

const solution = (video_len, pos, op_start, op_end, commands) => {
  const videoLength = getTotalSeconds(video_len)
  const openingStartTime = getTotalSeconds(op_start)
  const openingEndTime = getTotalSeconds(op_end)
  let positionTime = getTotalSeconds(pos)

  commands.forEach((command) => {
    positionTime = checkOpeningTime(positionTime, openingStartTime, openingEndTime)

    if (command === 'next') {
      positionTime = next(positionTime, videoLength)
    } else {
      positionTime = prev(positionTime)
    }
  })

  positionTime = checkOpeningTime(positionTime, openingStartTime, openingEndTime)

  return `${String(parseInt(positionTime / 60)).padStart(2, '0')}:${String(positionTime % 60).padStart(2, '0')}`
}
Comments