본문 바로가기

PS/프로그래머스

[프로그래머스 LV 3] 추석 트래픽 (파이썬/python)

728x90

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초동안의 요청의 갯수를 구하면 된다.

 

시,분,초 단위를 한번에 계산하기에는 너무 많은 노력이 들어가기때문에

모두 다 ms단위로 바꿔줌으로써 계산을 편하게 수행했다.

 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
def search(x, log_list):
    result = 0
    y = x + 1000 - 1
    for log in log_list:
        if log[1>= x and log[0<= y:
            result += 1
    return result
 
 
def solution(lines):
    answer = 0
    log_list = []
    # 먼저 시작시간과 끝시간을 저장한다
    for l in lines:
        eh, em, es = l.split()[1].split(":")
        t = l.split()[2].split("s")[0]
        # 전부 ms로 변환해줌!
        end_time = int(eh) * 3600 * 1000 + int(em) * 60 * 1000 + float(es) * 1000
        start_time = end_time - (float(t) * 1000+ 1
 
        log_list.append([start_time, end_time])
 
    # 시작과 끝을 각각 탐색한다.
    for log in log_list:
        answer = max(search(log[0], log_list), answer)
        answer = max(search(log[1], log_list), answer)
 
    print(log_list)
    return answer
cs

 

728x90