혜온의 이것저것

[2018 KAKAO RECRUITMENT] 추석트래픽 - Python 본문

Algorithm/Programmers

[2018 KAKAO RECRUITMENT] 추석트래픽 - Python

혜온 :) 2022. 1. 20. 17:28

[문제 이해 및 풀이]

응답완료 시간과 처리시간이 한번에 들어오기 때문에 우선 둘을 endtime과 gap으로 분리시켜 주었다. 이와 동시에 datetime의 timedelta를 사용해서 시작하는 시간도 함께 계산해주었다.

이렇게 lines을 한 바퀴 돌면서 start에는 시작시간을, end에는 응답완료시간을 저장해두었다.

 

1초동안 얼마나 많은 작업이 처리되고 있는 지 파악해 줘야 하기 때문에 하나의 end와 여러개의 start를 비교해주기 위해 이중for문을 사용하였다.

end[i]와 start[j]의 시간차이가 1초보다 작은 경우에는 같은 1초대에서 실행되고 있다고 할 수 있으므로 cnt를 하나씩 증가시켜 주었고, 각 end[i]를 기준으로 1초의 시간대가 바뀌기 때문에 max를 통해서 최대값을 구해주었다.


[나의 코드]

import datetime
def solution(lines):
    dateformat="%Y-%m-%d %H:%M:%S.%f"
    answer=0
    end=[];start=[]
    for i,time in enumerate(lines):
        endtime=time[:23]
        end.append(datetime.datetime.strptime(endtime,dateformat))
        gap=(float)(time[23:-1])
        start.append(end[i]-datetime.timedelta(seconds=gap)+datetime.timedelta(seconds=0.001))
    for i in range(len(lines)):
        cnt=0
        for j in range(i,len(lines)):
            if end[i]>start[j]-datetime.timedelta(seconds=1):
                cnt+=1
        answer=max(answer,cnt)
    return answer

문제 출처 : https://programmers.co.kr/learn/courses/30/lessons/17676

 

코딩테스트 연습 - [1차] 추석 트래픽

입력: [ "2016-09-15 20:59:57.421 0.351s", "2016-09-15 20:59:58.233 1.181s", "2016-09-15 20:59:58.299 0.8s", "2016-09-15 20:59:58.688 1.041s", "2016-09-15 20:59:59.591 1.412s", "2016-09-15 21:00:00.464 1.466s", "2016-09-15 21:00:00.741 1.581s", "2016-09-1

programmers.co.kr

 

Comments