문제 요약 : 비디오 길이, 현재 재생 시점, 오프닝 시작과 끝 시점, 사용자의 커맨드 ( prev, next : 각각 10초 전 후로 이동, 10초 미만으로 남거나 진행 중일 땐 끝으로 이동)가 주어졌을 때 사용자의 커맨드에 따라 진행한 후에 현재 위치를 찾는 것 ㅇㅇ . 근데 중요한 건 오프닝에 들어가면 오프닝 끝 포인트로 바로 점프 해야 됨!
def solution(video_len, pos, op_start, op_end, commands):
answer = ""
v_m, v_s = video_len.split(":")
v_m = int(v_m)
v_s = int(v_s)
p_m, p_s = pos.split(":")
p_m = int(p_m)
p_s = int(p_s)
op_s_m, op_s_s = op_start.split(":")
op_s_m = int(op_s_m)
op_s_s = int(op_s_s)
op_e_m, op_e_s = op_end.split(":")
op_e_m = int(op_e_m)
op_e_s = int(op_e_s)
#모두 초로 변환
video = v_m * 60 + v_s
pos = p_m * 60 + p_s
op_start = op_s_m * 60 + op_s_s
op_end = op_e_m * 60 + op_e_s
for command in commands:
print(f"before : pos : {pos}")
#오프닝 건너뛰기
if op_start <= pos <= op_end:
pos = op_end
if command == "prev":
if pos < 10 :
pos = 0
else :
pos -= 10
elif command == "next":
if video - pos < 10 :
pos = video
else :
pos += 10
print(f"after : pos : {pos}")
print("------")
if op_start <= pos <= op_end:
pos = op_end
x = int(pos/60)
y = int(pos%60)
answer = f"{x:02}:{y:02}"
return answer
근데 뭔가 짜고 보니까 너무 멍청하게 짠 거 같음
#prev : 10초 이전으로 이동, 10초 미만이면 영상의 처음으로 이동
#next : 10초 이후로 이동, 남은 영상의 길이가 10초 미만이면 영상의 끝으로 이동
#오프닝 건너뛰기 : 현재 위치가 오프닝 재생구간 (op_start~op_end)라면 오프닝 끝나는 위치로
#video_len = 동영상의 길이
#pos = 현재 재생위치
#op_start = 오프닝 시작위치
#op_end = 오프닝 끝 위치
#commands = 명령어 리스트
def openning(pos, s, e):
if s<=pos<=e:
pos = e
return pos
def solution(video_len, pos, op_start, op_end, commands):
v_m, v_s = video_len.split(":")
p_m, p_s = pos.split(":")
op_s_m, op_s_s = op_start.split(":")
op_e_m, op_e_s = op_end.split(":")
#모두 초로 변환
video = int(v_m) * 60 + int(v_s)
pos = int(p_m) * 60 + int(p_s)
op_start = int(op_s_m) * 60 + int(op_s_s)
op_end = int(op_e_m) * 60 + int(op_e_s)
for command in commands:
#오프닝 건너뛰기
# if op_start <= pos <= op_end:
# pos = op_end
pos = openning(pos, op_start, op_end)
if command == "prev":
if pos < 10 :
pos = 0
else :
pos -= 10
elif command == "next":
if video - pos < 10 :
pos = video
else :
pos += 10
# if op_start <= pos <= op_end:
# pos = op_end
pos = openning(pos, op_start, op_end)
answer = f"{int(pos/60):02}:{int(pos%60):02}"
return answer
1. 문자열 포맷팅
answer = f"{int(pos/60):02}:{int(pos%60):02}"
이런 식으로 f""꼴로 바로 만들 수 있으며, 2자리의 숫자로 표현하고 빈자리를 0으로 채우는 방법
ex) 14인 경우 -> 14 / 4인 경우 -> 04
v_m, v_s = video_len.split(":")
이런 식으로 .split("")를 통해 자를 수 있음! -> 이건 리스트로도 받을 수 있어서 나중에 공부를 조금 더 할 필요가 있음 ㅇㅇ
