📖 문제
🧑🏻💻 풀이 과정
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
※ 오류 및 오타, 다른 의견이 있는 경우 댓글을 남겨주시면 감사하겠습니다
'알고리즘 문제풀이 > Python' 카테고리의 다른 글
[프로그래머스] 합승 택시 요금 (0) | 2022.02.20 |
---|---|
[프로그래머스] 셔틀버스 (0) | 2022.02.19 |
[프로그래머스] 표 편집 (0) | 2022.02.17 |
[프로그래머스] 불량 사용자 (0) | 2022.02.16 |
[프로그래머스] 보석 쇼핑 (0) | 2022.02.15 |
댓글