
당신은 동영상 재생기를 만들고 있습니다. 당신의 동영상 재생기는 10초 전으로 이동, 10초 후로 이동, 오프닝 건너뛰기 3가지 기능을 지원합니다. 각 기능이 수행하는 작업은 다음과 같습니다.
op_start ≤ 현재 재생 위치 ≤ op_end)인 경우 자동으로 오프닝이 끝나는 위치로 이동합니다.동영상의 길이를 나타내는 문자열 video_len, 기능이 수행되기 직전의 재생위치를 나타내는 문자열 pos, 오프닝 시작 시각을 나타내는 문자열 op_start, 오프닝이 끝나는 시각을 나타내는 문자열 op_end, 사용자의 입력을 나타내는 1차원 문자열 배열 commands가 매개변수로 주어집니다. 이때 사용자의 입력이 모두 끝난 후 동영상의 위치를 "mm:ss" 형식으로 return 하도록 solution 함수를 완성해 주세요.
video_len의 길이 = pos의 길이 = op_start의 길이 = op_end의 길이 = 5video_len, pos, op_start, op_end는 "mm:ss" 형식으로 mm분 ss초를 나타냅니다.mm ≤ 59ss ≤ 59commands의 길이 ≤ 100commands의 원소는 "prev" 혹은 "next"입니다.| video_len | pos | op_start | op_end | commands | result |
|---|---|---|---|---|---|
| "34:33" | "13:00" | "00:55" | "02:55" | ["next", "prev"] | "13:00" |
| "10:55" | "00:05" | "00:15" | "06:55" | ["prev", "next", "next"] | "06:55" |
| "07:22" | "04:05" | "00:15" | "04:07" | ["next"] | "04:17" |
입출력 예 #1
입출력 예 #2
입출력 예 #3
def solution(video_len, pos, op_start, op_end, commands):
answer = ''
# 분-초 -> 초로 바꾸기
def set_time(t):
mm, ss = t
return int(mm) * 60 + int(ss)
# 모든 시간에 적용
video_len = set_time(video_len.split(':'))
pos = set_time(pos.split(':'))
op_start = set_time(op_start.split(':'))
op_end = set_time(op_end.split(':'))
for com in commands:
# 현재 pos가 op_start와 op_end 사이에 있을 때
if (op_start <= pos) and (op_end >= pos):
pos = op_end
# 명령어가 next일 때
if com == 'next':
pos += 10
# 영상 길이 벗아닐 시
if pos >= video_len:
pos = video_len
continue
# 명령어가 prev 일 때
else:
pos -= 10
# 영상 길이 벗어날 시
if pos <= 0:
pos = 0
continue
# 초 -> 분-초
if pos % 60 > 59:
pos = (pos // 60) + (pos % 60)
pos = f'{pos // 60:02d}:{pos % 60:02d}'
answer = pos
return answer
https://school.programmers.co.kr/learn/courses/30/lessons/340213?language=python3