당신은 동영상 재생기를 만들고 있습니다. 당신의 동영상 재생기는 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