새로운 블로그로 이전 작업을 진행하고 있어 포스트가 새로 작성되고 있지 않습니다.

빠른 시일 내에 새로운 블로그로 인사드리겠습니다.

새로운 블로그 : https://unho.vercel.app/

본문 바로가기
알고리즘 문제풀이/Python

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

by 언호 2022. 2. 18.

📖 문제


🧑🏻‍💻 풀이 과정

1) 문제 이해 및 접근

입력으로 주어진 문자열을 가공하여 요청 시작 시간과 응답하는 시간을 ms 단위로 변환시켰습니다.

딕셔너리 변수를 이용하여 키값을 ms 시간으로 하여 처리하는 요청의 최대 개수를 구하였습니다.

2) 알고리즘

  • 문자열

3) 풀이 코드

사용 언어 - Python

def solution(lines):
    answer = 0                                  # 초당 최대 처리량
    cnt = 0                                     # 특정 시간대 처리량
    time_line = {}                              # 시간 테이블 - 키: 시간(ms) / 값: 시작 또는 완료 여부 (-1, 1)

    for line in lines:                          # 로그 데이터
        date, time, duration = line.split(' ')  # 날짜, 시간, 처리 시간
        end_ms = int(time[:2]) * 3600000 + int(time[3:5]) * 60000 + int(time[6:8]) * 1000 + int(time[9:])       # 요청 시간 (ms)
        start_ms = end_ms - int(duration[0]) * 1000 - (int(duration[2:-1]) if len(duration) > 2 else 0) + 1     # 완료 시간 (ms)
        end_ms += 1000                                          # 1초간 최대 처리량을 구해야 하므로 완료 시간을 1초 추가

        time_line[start_ms] = time_line.get(start_ms, 0) + 1    # 시작 시간을 키로 해서 값은 1
        time_line[end_ms] = time_line.get(end_ms, 0) - 1        # 완료 시간을 키로 해서 값은 -1

    for t in sorted(time_line.keys()):      # 키값들을 오름차순 정렬하여 시간 순서대로 반복
        cnt += time_line[t]                 # 값들 누적시키기
        answer = max(answer, cnt)           # 최대 처리량 구하기

    return answer

📝 결과 및 학습한 내용

1) 어려웠던 내용

특별히 없습니다.

2) 새롭게 학습한 내용

특별히 없습니다.


🔗 문제 링크

-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

 

 

※ 오류 및 오타, 다른 의견이 있는 경우 댓글을 남겨주시면 감사하겠습니다

댓글