코딩 테스트/문제 풀기

[프로그래머스] 추석 트래픽

hazel_ 2021. 5. 11. 15:51

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

 

def solution(lines):
    lines_info=[]

    for line in lines:
        line=line.split()
        lines_info.append((line[1].split(':'),line[2].replace('s','')))

    new_lines=[]
    for line in lines_info:
        end_time=(int(line[0][0])*3600 + int(line[0][1])*60 + float(line[0][2]))*1000
        start_time=end_time-float(line[1])*1000 + 1
        new_lines.append((start_time, end_time))

    count = 0
    for j in range(len(new_lines)):
        temp_end = set()
        s = new_lines[j]

        for i in range(len(new_lines)):
            if (new_lines[i][0] <= s[1] and (new_lines[i][1] > s[
                1] + 1000)):  # 1. 다른 로그가, 해당 `타임라인의 앞부분` 보다 빨리 요청이 되고, 해당 `타임라인의 뒷부분`보다 늦게 완료가 되었을 때.
                temp_end.add(i)
            elif (s[1] <= new_lines[i][0] < s[
                1] + 1000):  # 2. 다른 로그가, 해당 `타임라인의 앞부분` 보다 늦게 요청이 되었지만, 그 요청이 `타임라인의 뒷부분` 보다 빨리 요청 되었을 때.
                temp_end.add(i)
            elif (s[1] <= new_lines[i][1] < s[
                1] + 1000):  # 3. 3. 다른 로그가, 해당 `타임라인의 앞부분` 보다 빨리 완료가 되었지만, 그게 `타임라인의 뒷부분` 보다 늦게 요청 되었을 때.
                temp_end.add(i)

        count = max(count, len(temp_end))

    return count