[プログラマー/JavaScript]秋夕トラフィック
11633 ワード
問題の説明📝
今年の秋夕(チュソク、陰暦8月15日)にシステム障害のない祝日を過ごすために、Apacheはサーバーの増設を悩んでいる.障害対応サーバーを増設するかどうかを決めるため、昨年秋夕(チュソク、陰暦8月15日)、9月15日にログデータを分析した後、1秒当たりの最大スループットを算出することにした.1秒あたりの最大スループットは、要求が応答を完了するかどうかにかかわらず、任意の時間から1秒(=1000ミリ秒)の要求を処理する最大数を意味します.
入力フォーマット
2479172ソリューション関数に送信される行シーケンスは、要求に対する各ログ文字列の応答完了時間Sおよび処理時間Tがスペースで区切られたN(1≦N≦2000)個のログ文字列からなる.
24172サーバ上のタイムアウト時間は3秒であるため、処理時間は0.001≦T≦3.000である.
出力フォーマット
に答える
異なる区間を用いたGriddy問題の答えは似ている.
function solution(lines) {
let answer = 0;
const getSecond = (time) => {
const splitedTime = time.split(":");
const hour = Number(splitedTime[0] * 3600);
const minute = Number(splitedTime[1] * 60);
const second = Number(splitedTime[2]);
return hour + minute + second;
};
const traffic = lines
.map((line) => [
Number(
(
getSecond(line.split(" ")[1]) -
line.split(" ")[2].slice(0, -1) +
0.001
).toFixed(3)
),
getSecond(line.split(" ")[1]),
])
.sort((a, b) => a[0] - b[0]);
const point = [];
traffic.forEach(([start, end]) => {
point.push(start), point.push(end);
});
point.sort();
point.forEach((startPoint) => {
let start = startPoint;
let end = startPoint + 1;
let count = 0;
traffic.forEach(([startTraffic, endTraffic]) => {
if (
(start <= startTraffic && startTraffic < end) ||
(start <= endTraffic && endTraffic < end) ||
(start >= startTraffic && endTraffic > end)
) {
count += 1;
}
});
if (count > answer) answer = count;
});
return answer;
}
Reference
この問題について([プログラマー/JavaScript]秋夕トラフィック), 我々は、より多くの情報をここで見つけました https://velog.io/@kyoung-jnn/프로그래머스자바스크립트JavaScript-추석-트래픽テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol