1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
| """
기능
- prev: 10초 전
- 10초 미만일 경우 0분 0초
- next: 10초 후
- 남은 시간이 10초 미만일 경우 마지막으로
- 오프닝 건너뛰기: 오프닝 구간(op_start ≤ 현재 재생 위치 ≤ op_end)인 경우
결과
- 입력이 모두 끝난 후 동영상의 위치
"""
NEXT = "next"
PREV = "prev"
def solution(video_len, pos, op_start, op_end, commands):
list_start = generate_num_list(op_start)
list_end = generate_num_list(op_end)
list_video_len = generate_num_list(video_len)
list_video_len1 = list_video_len[:]
minus_second(list_video_len1, 9)
answer = generate_num_list(pos)
for command in commands:
if (check_is_between(list_start, answer, list_end)): # 오프닝인지 확인
answer = list_end[:]
# 커맨드 실행
if command == NEXT:
answer[1] += 10
if (answer[1] >= 60):
answer[0] += 1
answer[1] -= 60
if (check_is_after(list_video_len1, answer)): # video_len 보다 이후인지 확인
answer = list_video_len[:]
elif command == PREV:
minus_second(answer, 10)
if (not check_is_after([0, 9], answer)): # 10초 미만인지 확인
answer = [0,0]
if (check_is_between(list_start, answer, list_end)): # 오프닝인지 확인 (마지막 커맨드 이후에는 확인을 못 하기 때문에)
answer = list_end[:]
return '{0:02d}:{1:02d}'.format(answer[0], answer[1])
# time에서 second만큼 빼는 함수
def minus_second(time, second):
time[1] -= second
if (time[1] < 0):
time[0] -= 1
time[1] += 60
# now가 compare보다 이후의 시간인지 확인하는 함수
def check_is_after(compare, now):
if (compare[0] <= now[0]):
if (compare[0] == now[0]):
return compare[1] <= now[1]
else:
return True
return False
# now 시간이 start와 end 사이인지 확인하는 함수
def check_is_between(start, now, end):
if start[0] <= now[0] <= end[0]:
if start[0] == now[0]:
return start[1] <= now[1]
elif now[0] == end[0]:
return now[1] <= end[1]
else:
return True
return False
# "XX:YY" 문자열이 들어오면 [XX, YY]로 변경하는 함수
def generate_num_list(str):
list_str = str.split(":")
return [int(list_str[0]), int(list_str[1])]
|