Notice
Recent Posts
Recent Comments
Link
«   2025/01   »
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
Tags
more
Archives
Today
Total
관리 메뉴

JH 개발 블로그

2021 카카오 코딩테스트 lv.3 광고 삽입 파이썬 본문

코딩테스트/2021 KAKAO BLIND RECRUITMENT

2021 카카오 코딩테스트 lv.3 광고 삽입 파이썬

쿠우우훈 2022. 1. 25. 04:52
def time_to_sec(time): #hh:mm:ss를 초로 바꿔줍니다
    time = list(map(int, time.split(':')))
    return 3600 * time[0] + 60 * time[1] + time[2]


def solution(play_time, adv_time, logs):
    play_time = time_to_sec(play_time) # 초 변환
    adv_time = time_to_sec(adv_time) # 초 변환
    viewrs = [0] * (play_time + 1)

    for log in logs:
        section = log.split('-')
        start, end = time_to_sec(section[0]), time_to_sec(section[1])
        viewrs[start] += 1 # start 시점에 시청자 한명을 추가해줍니다 
        viewrs[end] -= 1 # end 시점에 시청자 한명을 빼줍니다

    for i in range(1, play_time + 1):
        viewers[i] += viewers[i - 1] # viewers[i] = i ~ i+1초 구간의 시청자 수

    for i in range(1, play_time + 1):
        viewers[i] += viewers[i - 1] # viewers[i] = 0 ~ i+1초 구간의 누적 시청자 수

    max_viewrs = viewrs[adv_time - 1] # 0 ~ adv_time초 구간의 누적 시청자 수
    sec = 0 # 현재 초
    
    for i in range(1, play_time - adv_time + 1):
        if max_viewrs < viewrs[i+adv_time-1] - viewrs[i-1]
            max_viewrs = viewrs[i+adv_time-1] - viewrs[i-1] # i ~ i+adv_time초 구간 시청자 수
            sec = i # 현재 초

    h = str(sec//3600).zfill(2)
    m = str((sec%3600)//60).zfill(2)
    s = str(sec%60).zfill(2)

    return h+':'+m+':'+s

 

Comments