본문 바로가기

알고리즘/프로그래머스

[Python] 프로그래머스 level3 [1차] 추석 트래픽

 

코딩테스트 연습 - [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

풀이 방법

  • lines의 원소를 파싱해서 각각의 시작점과 끝점을 구해서 저장한다.
  • 최대 처리량의 시작점이 될 수 있는 후보는 각 트래픽의 끝점이다. 
  • 각 트래픽의 끝점에서 시작하여 1초 후가 정답이 될 수 있는 구간의 후보이다.
  • 모든 구간의 후보에 대하여 포함하는 트래픽의 개수가 몇 개인지 비교해서 최댓값을 저장한다.

 

전체 코드

def solution(lines):
    answer = 0
    arr = []
    candidate = []
    for i in lines:
        i = i.split()[1:]
        time, T = i
        T = float(T[:-1])
        end = int(time[0:2])*3600 + int(time[3:5])*60 + float(time[6:])
        start = end-T + 0.001
        arr.append((start, end))
        candidate.append(end)
    for i in candidate:
        cnt = 0
        for start, end in arr:
            if not (start>=i+1 or end < i):
                cnt += 1
        answer = max(answer, cnt)
    return answer
반응형