본문 바로가기
Programming/Programmers

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

by 데이터현 2021. 11. 8.

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

상당히 애를 먹었다...

 

1. 종료시간과 처리시간을 통해 시작시간을 구한다. float 형태는 문제가 생길 수 있으니 int 형으로 변환

2. 시작시간과 종료시간으로 이루어진 리스트를 만든다.

3. 각 리스트의 기준선에서 1초를 더한 값들을 기반으로 영역 사이에 있는지 체크하여 최대 처리량을 반환

 

나의 풀이

def solution(lines):
    history = []
    for line in lines:
        end_time , t = line.split()[1:]
        end_time = end_time.split(':')
        end_time = (int(end_time[0])*3600 + int(end_time[1])*60 + float(end_time[2]))*1000
        t = float(t[:-1])*1000
        start_time = end_time-t+1
        history.append([start_time,end_time])
    answer = 1
    for hist1 in history:
        counting_0 = 0
        counting_1 = 0
        for hist2 in history:
            start1,start2 = hist1
            end1,end2 = start1+1000,start2+1000
            if hist2[1]>=start1 and end1>hist2[0]:
                counting_0 +=1
            if hist2[1]>=start2 and end2>hist2[0]:
                counting_1 +=1
        answer = max(answer,counting_0,counting_1)
    return answer

댓글