새소식

Programmers

[Programmers] [1차] 추석 트래픽 문제 - (javascript)

  • -
728x90
문제 이름 :  [1차] 추석 트래픽

 

<<< 문제 내용 >>>



 

function solution(lines) { let answer = 0; const array = []; let count = 0; /* HH:MM:SS.MILI GAP(s) 를 기준으로 값을 받아서 time을 mili초 단위로 변경시켜서 계산합니다. **중요한 것은 end 시간은 1초만큼 더해주어야 예제 2번과 같은 경우를해결할 수 있습니다. */ const changeTimes = (h, m, s, mili, gap) => { const time = ((Number(h)*3600)+(Number(m)*60)+Number(s))*1000+(Number(mili)); array.push([time-(Number(gap)*1000)+1, 'start']); array.push([time+1000, 'end']); } for(const line of lines){ const [_, times, gap] = line.split(' '); const [h, m, sLine] = times.split(':'); const [s, mili] = sLine.split('.'); changeTimes(h, m, s, mili, gap.slice(0, -1)); array.sort((a, b)=> a[0]-b[0]); } for(const temp of array){ if(temp[1] === 'start'){ count +=1; }else count -=1; answer = Math.max(answer, count); } return answer; }

* 알고리즘 키워드(Keyword) => 설명란의 막대기처럼 시작과 끝 시간을 mili초를 기준으로 변경하여(끝 시간은 +1초로 해주어야 함) 배열에 넣고, 시간 순으로 정렬하여 시작이면 카운트를 올리고 끝이면 카운트를 내리면서 최대 카운트를 찾아내면 됩니다.

 

 

 

도움이 되셨다면 공감 부탁드립니다.

Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.