[프로그래머스] Level 1 동영상 재생기 - 구현 (Javascript, Python3)

Jun·2025년 3월 7일

알고리즘

목록 보기
11/19

문제 링크

바로가기

문제 풀이

JS

function solution(video_len, pos, op_start, op_end, commands) {
  const convertTime = (str) => {
    const [mm, ss] = str.split(":");
    return Number(mm) * 60 + Number(ss);
  };

  const v_len = convertTime(video_len);
  const o_start = convertTime(op_start);
  const o_end = convertTime(op_end);

  let c_pos = convertTime(pos);

  for (const command of commands) {
    if (c_pos < 0) c_pos = 0;
    if (c_pos > v_len) c_pos = v_len;
    if (c_pos >= o_start && c_pos <= o_end) c_pos = o_end;

    switch (command) {
      case "next":
        c_pos += 10;
        break;
      case "prev":
        c_pos -= 10;
        break;
    }
  }

  if (c_pos < 0) c_pos = 0;
  if (c_pos > v_len) c_pos = v_len;
  if (c_pos >= o_start && c_pos <= o_end) c_pos = o_end;

  const mm = Math.floor((c_pos / 60).toString());
  const ss = (c_pos % 60).toString();

  return String(mm).padStart(2, "0") + ":" + String(ss).padStart(2, "0");
}

PY

def convertTime(str):
    [mm, ss] = map(int, str.split(":"))
    return mm * 60 + ss

def solution(video_len, pos, op_start, op_end, commands):
    c_pos = convertTime(pos)
    v_len = convertTime(video_len)
    o_s = convertTime(op_start)
    o_e = convertTime(op_end)
    
    for command in commands:
        if c_pos >= o_s and c_pos <= o_e: c_pos = o_e
        if command == "next": c_pos = min(v_len, c_pos + 10)
        elif command == "prev": c_pos = max(0, c_pos - 10)
        
    if c_pos >= o_s and c_pos <= o_e: c_pos = o_e
        
    return str(c_pos // 60).zfill(2) + ":" + str(c_pos % 60).zfill(2)

풀이

이 문제도 단순 구현 문제인데 마지막에 0을 채우는 방법이 떠오르지 않아 애를 먹은 문제였다.

자바스크립트를 이용해서 먼저 문제를 풀었는데 코드를 조금 더 간결하게 만들 수 있을 것 같았다. 그래서 파이썬으로는 좀 더 코드를 간결화하는데 집중해서 문제를 풀었다. 저렇게 범위를 넘어가는 경우가 있을 때는 조건문을 통해 처리하기보다는 저렇게 최대, 최소로 비교하는 방법이 훨씬 깔끔한 것 같다.

새롭게 배운 점

  1. 자바스크립트에서 왼쪽에 문자를 채울 때는 String().padStart(길이, "넣을 문자")
  2. 파이썬에서 왼쪽에 문자를 채울 때는 str().zfill(2) 하면 자동으로 0을 채워준다.
profile
2D | 3D 프론트엔드 개발자

0개의 댓글