컴퓨터를 공부하고자 마음먹은지 N일차
[216일차]boj 2108 nodejs 본문
728x90
BOJ 2108 통계학
CODE
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 | const readline = require("readline"); const rl = readline.createInterface({ input: process.stdin, output: process.stdout, }); const input = []; function getAverage(N, nums) { let sum = nums[0]; for (let i = 1; i < N; i++) { sum += nums[i]; } return Math.round(sum / N); } function getMid(N, nums) { let centIdx = ~~(N / 2); return nums[centIdx]; } function getMode(N, nums) { const modeObj = {}; let modeList = []; let maxCount = 0; nums.forEach((num) => { if (!modeObj[num]) { modeObj[num] = 1; } else { modeObj[num]++; } }); Object.keys(modeObj).forEach((key) => { const count = modeObj[key]; if (maxCount <= count) { maxCount = count; } }); Object.keys(modeObj).forEach((key) => { const count = modeObj[key]; if (maxCount === count) modeList.push(+key); }); modeList.sort((a, b) => a - b); if (modeList.length === 1) { return modeList[0]; } else { return modeList[1]; } } function getRange(N, nums) { const max = nums[N - 1]; const min = nums[0]; return max - min; } rl.on("line", function (line) { input.push(line); }).on("close", function () { const N = +input.shift(); const nums = input.map((_) => +_).sort((a, b) => a - b); const average = getAverage(N, nums); const cent = getMid(N, nums); const mode = getMode(N, nums); const range = getRange(N, nums); console.log(average); console.log(cent); console.log(mode); console.log(range); process.exit(); }); | cs |
description
런타임 에러때문에 es6문법을 es5로도 바꿔보고,
for in이나 of문을 for문이나 함수형 순환문으로도 바꿔봤는데,
결국 잘못은 내코드였다 ㅎㅎ;(타입스크립트로도 문제풀게 해달라 ㅠ)
이 문제의 포인트는 mode를 구하는거다 최빈값.
첫번째는 먼저 가장 큰 반복횟수 를 찾는 과정이다.
이 과정에서 for문을 두번썼다. 다행히 중첩이되지않아서 시간초과는 안남
가장 큰 반복횟수와 같은 수를 modeList에다 집어넣어줬다.
그리고 그것의 1번째인덱스를 리턴하면 되는것.
'🧠PS' 카테고리의 다른 글
[221일차]boj 2231 nodejs (0) | 2021.04.22 |
---|---|
[220일차]boj 2164 nodejs(연결리스트 응용문제) (0) | 2021.04.21 |
[211일차]boj1966 nodejs (0) | 2021.04.12 |
[206일차]boj1929 nodejs (0) | 2021.04.07 |
[205일차]boj1920 node.js (0) | 2021.04.06 |
Comments