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초로 해주어야 함) 배열에 넣고, 시간 순으로 정렬하여 시작이면 카운트를 올리고 끝이면 카운트를 내리면서 최대 카운트를 찾아내면 됩니다. 도움이 되셨다면 공감 부탁드립니다. 공유하기 URL 복사카카오톡 공유페이스북 공유엑스 공유 게시글 관리 구독하기MoveRoad's Factory 저작자표시 Contents 당신이 좋아할만한 콘텐츠 [Programmers] 이중우선순위큐 문제 - (javascript) 2022.05.03 [Programmers] 다단계 칫솔 판매 문제 - (javascript) 2022.05.02 [Programmers] 기능개발 문제 - (javascript) 2022.04.24 [Programmers] 최고의 조합 문제 - (javascript) 2022.04.21 댓글 0 + 이전 댓글 더보기