프로그래머스 - [Level 2] [1차] 추석 트래픽(JAVASCRIPT)
카테고리 : 문자열
풀이과정은 다음과 같다.
1) 문자열 파싱
- 년월일은 고정이므로, 무시한다.
- 시간, 분, 초를 초 단위로 통일한다.
단, 초는 소수점 3자리까지 존재하므로 1초는 => 100으로 환산한다.
시간 => 3600 * 100
분 => 60 * 100
2) 처리량 Counting
주어진 타임라인 배열은 종료시간을 기준으로 오름차순 정렬되어있다.
따라서, 순차적으로
현재 마감시간보다 시작시간이 작은 index까지 탐색하며, count+1 해준다.
단, 현재 시작시간은 endTime-(경과시간-1)로 설정해야한다.
문제에서 "2016-09-15 01:00:04.002 2.0s"가 주어진 경우
2초는 현재시간, 마감시간을 포함하기 때문이다.
따라서, [시작 시간 ~ 마감시간]은 다음과 같다
[01:00:02.003 ~ 01:00:04.002]
소스 코드
function solution(lines) {
let answer = 1;
function parse(line){
let lineArr=line.split(' ');
let time=lineArr[1].split(':');
let endTime=0;
let startTime=0;
endTime+=time[0]*3600000;
endTime+=time[1]*60000;
endTime+=time[2]*1000;
startTime=endTime-(lineArr[2].slice(0,lineArr[2].length-1)*1000-1);
return [startTime,endTime];
}
function count(lines){
for(let i=0;i<lines.length-1;i++){
let cur=lines[i];
let curStartTime=parse(cur)[0];
let curEndTime=parse(cur)[1]+999;
let count=1;
for(let j=i+1;j<lines.length;j++){
let next=lines[j];
let nextStartTime=parse(next)[0];
if(curEndTime>=nextStartTime) count++;
}
answer=Math.max(answer,count);
}
}
count(lines);
return answer;
}
Leave a comment