프로그래머스 - [Level 2] [1차] 추석 트래픽(JAVASCRIPT)

less than 1 minute read

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

카테고리 : 문자열

풀이과정은 다음과 같다.

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