2108-統計学
統計学の問題に移動
質問する
マイコード
実はアルゴリズムと問題を解くのは難しくないと思います.
しかし、最も頻繁な値を探しているところで、メモリが超過したり、タイムアウトしたり、異常に66%程度でエラーが発生したりして、頭が痛くなります.
メモリ過剰量は、
質問する
マイコード
const [n, ...arr] = require("fs")
.readFileSync("/dev/stdin")
.toString()
.trim()
.split("\n");
const obj = {};
const numbers = arr
.map((el) => {
if (obj[el]) obj[el] += 1;
else obj[el] = 1;
return Number(el);
})
.sort((a, b) => a - b);
const modeTimes = Math.max(...Object.values(obj));
const modeArr = [
...new Set(
Object.keys(obj)
.sort((a, b) => a - b)
.filter((el) => obj[el] === modeTimes)
),
];
const avg = Math.round(
numbers.reduce((acc, cur) => acc + cur, 0) / numbers.length
);
console.log(avg === -0 ? 0 : avg);
console.log(numbers[Math.floor(numbers.length / 2)]);
console.log(modeArr[1] || modeArr[0]);
console.log(numbers[numbers.length - 1] - numbers[0]);
難点実はアルゴリズムと問題を解くのは難しくないと思います.
しかし、最も頻繁な値を探しているところで、メモリが超過したり、タイムアウトしたり、異常に66%程度でエラーが発生したりして、頭が痛くなります.
メモリ過剰量は、
numbers
配列とobj
オブジェクトのみを生成できます.メモリ過剰の問題を解決し、タイムアウトの問題も自然に解決しました.ただ並びが多くなり、繰り返し回数も多くなったのでタイムアウトしたようです.なぜ66%が間違っているのか分かりません.const modeArr = [
...new Set(
Object.keys(obj)
.sort((a, b) => a - b)
.filter((el) => obj[el] === modeTimes)
),
];
この部分のObject.keys(obj).sort((a, b) => a - b)
はもともとnumbers
だったのですが、このように変えて解決しました.ソートや繰り返しが問題かもしれません.Reference
この問題について(2108-統計学), 我々は、より多くの情報をここで見つけました https://velog.io/@alstnsrl98/백준-2108-통계학テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol