def solution(video_len, pos, op_start, op_end, commands):
answer = ''
if (pos >= op_start) and pos <= op_end:
pos = op_end
#pos 쪼개기
split_pos = pos.split(':')
min = int(split_pos[0])
sec = int(split_pos[1])
# 비디오 전체 시간 쪼개기
split_video_len = video_len.split(':')
video_min = int(split_video_len[0])
video_sec = int(split_video_len[1])
#이동한 위치가 오프닝 구간이면 오프닝이 끝나는 위치로 이동
if answer >= op_start and answer <= op_end:
answer = op_end
for i in commands:
if i == "next":
sec += 10
if sec >= 60:
min += 1
sec -= 60
if min == video_min and (video_sec - sec) < 10:
answer = video_len
elif i == "prev":
sec -= 10
#min이 음수인 경우
if min == 0 and sec <= 0:
sec = 0
if sec < 0:
min -= 1
sec -= 60
if answer >= op_start and answer <= op_end:
answer = op_end
min = str(f"{min:02d}")
sec = str(f"{sec:02d}")
answer = min + ":" + sec
#이동한 위치가 오프닝 구간이면 오프닝이 끝나는 위치로 이동
if answer >= op_start and answer <= op_end:
answer = op_end
#next한 영상의 범위가 동영상 범위를 벗어날 경우
if answer >= video_len:
answer = video_len
return answer
테스트 케이스 몇개가 틀려서 정확성 50나옴 ㅠㅠ
어디서 틀린건지 잘 모르겠음
def solution(video_len, pos, op_start, op_end, commands):
def time_to_seconds(time_str):
mm, ss = map(int, time_str.split(':'))
return mm * 60 + ss
def seconds_to_time(seconds):
mm = seconds // 60
ss = seconds % 60
return f"{mm:02d}:{ss:02d}"
# 시간을 초 단위로 변환
video_len_sec = time_to_seconds(video_len)
pos_sec = time_to_seconds(pos)
op_start_sec = time_to_seconds(op_start)
op_end_sec = time_to_seconds(op_end)
# 오프닝 구간 체크
if op_start_sec <= pos_sec <= op_end_sec:
pos_sec = op_end_sec
# 명령어 처리
for command in commands:
if command == "next":
pos_sec += 10
if pos_sec > video_len_sec:
pos_sec = video_len_sec
elif command == "prev":
pos_sec -= 10
if pos_sec < 0:
pos_sec = 0
# 명령 실행 후 오프닝 구간 체크
if op_start_sec <= pos_sec <= op_end_sec:
pos_sec = op_end_sec
# 결과를 다시 "mm:ss" 형식으로 변환
return seconds_to_time(pos_sec)