[KakaoSolving] 2021 카카오 블라인드 채용 - 광고삽입 [Level3]
문제 설명은 생략하겠습니다. 링크를 클릭하세요.
문제 링크
입출력 예
play_time | adv_time | logs | result |
---|---|---|---|
"02:03:55" | "00:14:15" | ["01:20:15-01:45:14", "00:40:31-01:00:00", "00:25:50-00:48:29", "01:30:59-01:53:29", "01:37:44-02:02:30"] | "01:30:59" |
"99:59:59" | "25:00:00" | ["69:59:59-89:59:59", "01:00:00-21:00:00", "79:59:59-99:59:59", "11:00:00-31:00:00"] | "01:00:00" |
"50:00:00" | "50:00:00" | ["15:36:51-38:21:49", "10:14:18-15:36:51", "38:21:49-42:51:45"] | "00:00:00" |
유형
- prefix sum
- 구현
나의 풀이
어려웠엉.. 이문제
prefix sum을 이용하는 깔쌈한 구현 능력이 필요한 문제..
설계 + 구현 능력이 뒷받침 된다면, 아래처럼 정제되고 깔꼼한 코드를 뚝딱할 수 있지만 난 아녔다..
풀이를 참고하고 보니 생각보다 어려운 문제는 아니였지만 짜임새 있는 코드는 잘 설계된 아이디어에서 나온 코드가 분명하다.. 오늘도 마니 배웠다. 나도 이렇게 짜보고 싶다.
그리고 풀이는
나 요즘 공부가 ㅏㅏ 하기 시러.
그러니까 낼 포스팅 마무리 할래
코드
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 = "0" + str(time // 3600)
m = "0" + str((time%3600)//60)
s = "0" + str((time%3600)%60)
h = h[-2:]; m=m[-2:]; s=s[-2:]
return h+":"+m+":"+s
def solution(play_time, adv_time, logs):
# 동영상 재생시간 길이 play_time, 공익광고의 재생시간 길이 adv_time, 시청 구간 정보 logs
n = str_to_int(play_time)
m = str_to_int(adv_time)
time_board = [0]*360000
# 1. 각 구간의 시작과 종료를 time_board에 표시
for i in logs:
start, end = i.split('-')
start = str_to_int(start)
end = str_to_int(end)
time_board[start] += 1
time_board[end] -= 1
# 2. 구간별 시청자수 기록
for i in range(1, 360000): time_board[i] += time_board[i-1]
# 3. 모든 구간 시청자수 누적 기록
for i in range(1, 360000): time_board[i] += time_board[i-1]
max_ = time_board[m-1]
idx = 0
for i in range(m, n):
if max_ < time_board[i] - time_board[i-m]:
max_ = time_board[i] - time_board[i-m]
idx = i-m+1
return int_to_str(idx)
Author And Source
이 문제에 관하여([KakaoSolving] 2021 카카오 블라인드 채용 - 광고삽입 [Level3]), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@redcarrot01/KakaoSolving-2021-채용-연계-인턴쉽-숫자-문자열과-영단어-Level1-9x785lkl저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)