https://programmers.co.kr/learn/courses/30/lessons/17676
처리 완료 날짜, 시각, 처리시간으로 이루어진 로그 파일을 받아 초당 최대 처리량을 구해내는 문제이다.
초당 최대 처리량은 처리량이 가장 많았던 1초를 뜻하는 것으로 보인다.
파싱 문제인 것 같다.
def timestamp_to_seconds(timestamp):
h, m, s = map(float, timestamp.split(':'))
return h*3600 + m*60 + s
def parse_line(line):
timestamp, length = line.split()[1:]
length = float(length[:-1])
seconds = timestamp_to_seconds(timestamp)
return [round(seconds-length+0.001, 3), seconds]
def solution(lines):
answer = 0
newlines = list(map(parse_line, lines))
for i, (start, end) in enumerate(newlines):
tmp = 1
for j, (a, b) in enumerate(newlines):
if b < end or a >= end+1 or i==j: continue
tmp += 1
answer = max(tmp, answer)
return answer
우선 hh:mm:ss.sss 형식의 문자열을 초로 환산한 timestamp_to_seconds 함수와
로그 한 줄 전체를 [시작시각, 끝시각]의 리스트로 만들어주는 parse_line 함수를 만들어 주었다.
이 둘을 이용해 로그들의 리스트를 [ [시작시각, 끝시각], ....] ] 형태의 리스트로 변경해주었다.
정렬을 해준다면 시간이 줄지만 귀찮아서 이중포문으로 돌아 조건에 맞으면 정답에 포함하는 식으로 답을 구하였다.
조건을 만들 때 어디가 <=, >= 이고 어디가 <, > 인지 헷갈려 시간을 많이 소비한 것 같다.