본문 바로가기
코딩 테스트/문제 풀기

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

by hazel_ 2021. 5. 11.

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

'코딩 테스트 > 문제 풀기' 카테고리의 다른 글

[프로그래머스] 멀리뛰기  (0) 2021.05.10
[프로그래머스] 보석 쇼핑  (0) 2021.05.09
[프로그래머스] 불량 사용자  (0) 2021.05.08
[프로그래머스] 등굣길  (0) 2021.05.08
[프로그래머스] 순위  (0) 2021.05.03

댓글