[Programmers] (Javascript) μΆμ νΈλν½
https://programmers.co.kr/learn/courses/30/lessons/17676#qna
μ½λ©ν μ€νΈ μ°μ΅ - [1μ°¨] μΆμ νΈλν½
μ λ ₯: [ "2016-09-15 20:59:57.421 0.351s", "2016-09-15 20:59:58.233 1.181s", "2016-09-15 20:59:58.299 0.8s", "2016-09-15 20:59:58.688 1.041s", "2016-09-15 20:59:59.591 1.412s", "2016-09-15 21:00:00.464 1.466s", "2016-09-15 21:00:00.741 1.581s", "2016-09-1
programmers.co.kr
βΆ μ½λ :
function solution(lines) {
let answer = 0;
let data = [];
let minTime = 100000000;
let maxTime = 0;
for (const line of lines)
{
var temp = line.split(' ');
var time = temp[1].split(':');
var h = parseInt(time[0]) * 3600;
var m = parseInt(time[1]) * 60;
var s = parseFloat(time[2]);
var endTime = (h + m + s) * 1000;
var startTime = endTime - (parseFloat(temp[2].split('s').join(''))*1000 - 1);
data.push([startTime, endTime]);
}
// λ¬Έμμ΄μ μ«μλ‘ λ°κΎΈμ΄ μ μ₯
// μ΄λ‘ λ³νν΄μ ν΄λ³΄μ
let count = 0;
for (let i =0; i < data.length; i++)
{
let boundL = data[i][1];
let boundR = boundL + 999;
let temp = 1;
for (let j = i+1; j<data.length; j++)
{
if (data[j][0] > boundR)
{
continue;
}
else
{
temp+=1;
}
}
if (temp > count)
{
count = temp;
}
}
return count;
}
βΆ λ¬Έμ νμ΄ :
1. μ΄κΈ° κ°κ°μ λ‘κ·Έ μ 보 λ¬Έμμ΄λ€μ λν΄ μκ°μ μ΄μ λμ μΌλ‘ λ³ννλ€.
- ν΄λΉ λ¬Έμ μ κ²½μ° μμμ μ μ§Έμ리κΉμ§ λνλ μκΈ°μ 1000μ κ³±νμ¬ μ μννλ‘ λ³ννλ€ μμμκ°κ³Ό λμκ°μ μ΄(second)λμ κ°μ data λ°°μ΄μ μ μ₯νλ€.
2. μ΄μ ν΄λΉ κ°λ€μ μ΄μ©ν΄ νμνμ¬ 1μ΄λμ μ²λ¦¬λ λ‘κ·Έμμ μ΅λκ°μ μ°ΎμμΌνλλ° μ΄κΈ° μμ νμμ μ΄μ©ν΄ ꡬννμΌλ μκ°μ΄κ³Όκ° λμλ€.
3. μ΄λ‘μΈν΄ λ‘μ§μ λ³νλ₯Ό μ£Όμ΄μΌ νκ³ , μ’ λ£μκ°μ κΈ°μ€μΌλ‘ μ€λ¦μ°¨μλ μ λ ¬λ λ°μ΄ν°(lines)μμ μ°©μνμ¬ κ° λ‘κ·Έμ μ’ λ£μκ°μ μμμκ°μΌλ‘ νμ¬ 1μ΄ λ΄μ λ‘κ·Έμ μλ₯Ό νμνλ©΄ λλ€κ³ μκ°νλ€.
4. μ΄ν κ°κ°μ ꡬκ°λ³λ‘ λ€λ₯Έ λ‘κ·Έλ€(νμ¬ μμκ°μ΄ λλ λ‘κ·Έμ μ΄ν μ²λ¦¬λ λ‘κ·Έλ€)κ³Ό λΉκ΅νμ¬ λ§μΌ νμ¬ 1μ΄κ΅¬κ°μ λ§μ§λ§μκ°(boundR)λ³΄λ€ ν΄λΉ λ‘κ·Έμ μμμκ°(data[j][0])μ΄ ν° κ²½μ°κ° μλλΌλ©΄ countλ₯Ό μ¬λ €μ£Όμλ€.
- μμ κ°μ΄ λ‘κ·Έκ° μ’ λ£μκ°μ κΈ°μ€μΌλ‘ μ€λ¦μ°¨μ μ λ ¬λμ΄ μλ€λ©΄, κ° λ‘κ·Έμ μ’ λ£κ° κΈ°μ€ 1μ΄λ΄ λ€λ₯Έ λ‘κ·Έλ€κ³Ό κ²ΉμΉλ νμλ₯Ό μΈλ κ²μ΄ κ°μ₯ ν° countκ°μ μ»μ μ μλ λ°©λ²μ΄λ€.
βΆ μ€ν¨ μ½λ => κ²½μ°κ° λ€λ₯΄λ€.
μ΄κ²½μ°λ λ‘κ·Έμκ°μ΄ μ’ λ£μκ°μ κΈ°μ€μΌλ‘ μ€λ¦μ°¨μμ΄ μλλ μμ νμμΌλ‘ ꡬνν κ²½μ°
let count = 0;
// λ‘κ·Έ μ€ μ΄λ€ λ‘κ·Έμκ°μ endtimeμΌλ‘λΆν° 1μ΄λ΄μ ν΄λΉ μκ°μ΄ ν¬ν¨λλμ§λ₯Ό νμΈνλ©΄ νμνμλ₯Ό μ€μΌ μ μλ€.
// νμ¬ λ°©μμ λ‘κ·Έμκ°μ΄ μ’
λ£μκ°μ κΈ°μ€μΌλ‘ μ€λ¦μ°¨μ μ λ ¬μ΄ μλλμ κ²½μ°μ
for (let i = minTime; i <= maxTime; i++ )
{
let boundL = i;
let boundR = i + 999;
let temp = 0;
for (const times of data)
{
if (times[1] < boundL || times[0] > boundR){
continue;
}
else
{
temp += 1;
}
}
if (temp > count)
{
count = temp;
}
}