“죠르디”의 동영상 재생시간 길이 play_time, 공익광고의 재생시간 길이 adv_time, 시청자들이 해당 동영상을 재생했던 구간 정보 logs가 매개변수로 주어질 때, 시청자들의 누적 재생시간이 가장 많이 나오는 곳에 공익광고를 삽입하려고 합니다. 이때, 공익광고가 들어갈 시작 시각을 구해서 return 하도록 solution 함수를 완성해 주세요. 만약, 시청자들의 누적 재생시간이 가장 많은 곳이 여러 곳이라면, 그중에서 가장 빠른 시작 시각을 return 하도록 합니다.
1 . 모든 시간을 '초'단위로 환산
2. logs 내의 모든 시간 초로 환산 및 start, end 구분
3. 구간별 시청자수 기록
4. 모든 구간 시청자 누적 기록
5. 누적된 시청자수를 바탕으로 가장 시청자수가 많은 구간 탐색
def solution(play_time, adv_time, logs): answer = '' play_time_sec = str_to_int(play_time) # 1 adv_time_sec = str_to_int(adv_time) total_time = [0 for i in range(play_time_sec + 1)] #total_time[x] = x 시각에 시작된 재생 구간의 개수 – x 시각에 종료된 재생구간의 개수 for x in logs: logs_start_sec,logs_end_sec = x.split("-") logs_start_sec = str_to_int(logs_start_sec) logs_end_sec = str_to_int(logs_end_sec) total_time[logs_start_sec] += 1 total_time[logs_end_sec] -= 1 for i in range(1, (play_time_sec)): # 3 total_time[i] = total_time[i] + total_time[i - 1] for i in range(1, (play_time_sec)): # 4 total_time[i] = total_time[i] + total_time[i - 1] most_view = 0 max_time = 0 for i in range(adv_time_sec - 1, play_time_sec): if i >= adv_time_sec: if most_view < total_time[i] - total_time[i - adv_time_sec]: most_view = total_time[i] - total_time[i - adv_time_sec] max_time = i - adv_time_sec + 1 else: if most_view < total_time[i]: most_view = total_time[i] max_time = i - adv_time_sec + 1 #most_view = int_to_str(most_view) #max_time = int_to_str(max_time) #print(max_time , most_view) #answer = max_time return int_to_str(max_time) def str_to_int(time): h, m, s = time.split(':') return int(h) * 3600 + int(m) * 60 + int(s) def int_to_str(time): h = time // 3600 h = '0' + str(h) if h < 10 else str(h) time = time % 3600 m = time // 60 m = '0' + str(m) if m < 10 else str(m) time = time % 60 s = '0' + str(time) if time < 10 else str(time) return h + ':' + m + ':' + s
졸라어렵네...