λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°
κ°œμΈκ³΅λΆ€/Algorithm

[λ°±μ€€][Node.js] 2108번 : 톡계학

by πŸ‡λ°•λ΄‰λ΄‰πŸ‡ 2021. 7. 26.

 

 

Algorithm

-  톡계학 -

 


 

문제

수λ₯Ό μ²˜λ¦¬ν•˜λŠ” 것은 ν†΅κ³„ν•™μ—μ„œ μƒλ‹Ήνžˆ μ€‘μš”ν•œ 일이닀.

ν†΅κ³„ν•™μ—μ„œ N개의 수λ₯Ό λŒ€ν‘œν•˜λŠ” κΈ°λ³Έ ν†΅κ³„κ°’μ—λŠ” λ‹€μŒκ³Ό 같은 것듀이 μžˆλ‹€. 단, N은 ν™€μˆ˜λΌκ³  κ°€μ •ν•˜μž.

 

1. μ‚°μˆ ν‰κ·  : N개의 μˆ˜λ“€μ˜ 합을 N으둜 λ‚˜λˆˆ κ°’

2. 쀑앙값 : N개의 μˆ˜λ“€μ„ μ¦κ°€ν•˜λŠ” μˆœμ†Œλ‘œ λ‚˜μ—΄ν–ˆμ„ 경우 κ·Έ 쀑앙에 μœ„μΉ˜ν•˜λŠ” κ°’

3. μ΅œλΉˆκ°’ : N개의 μˆ˜λ“€ 쀑 κ°€μž₯ 많이 λ‚˜νƒ€λ‚˜λŠ” κ°’

4. λ²”μœ„ : N개의 μˆ˜λ“€ 쀑 μ΅œλŒ“κ°’κ³Ό μ΅œμ†Ÿκ°’μ˜ 찾이

 

N개의 μˆ˜κ°€ μ£Όμ–΄μ‘Œμ„ λ•Œ, λ„€ 가지 κΈ°λ³Έ 톡계값을 κ΅¬ν•˜λŠ” ν”„λ‘œκ·Έλž¨μ„ μž‘μ„±ν•˜μ‹œμ˜€.

 

μž…μΆœλ ₯ μ˜ˆμ‹œ

 

문제 ν’€κΈ°

const fs = require("fs");
const input = fs.readFileSync("/dev/stdin").toString().trim().split("\n").map((el) => Number(el));

input.shift();
input.sort((a, b) => a - b);

// μ‚°μˆ ν‰κ· 
let sum = input.reduce((past, curr) => past + curr, 0);
let value1 = Math.round(sum / input.length);

// 쀑앙값
let value2 = input[Math.floor(input.length / 2)];

// μ΅œλΉˆκ°’
let mostNum = new Map();
for (let i = 0; i < input.length; i++) {
	if (mostNum.has(input[i])) {
		mostNum.set(input[i], mostNum.get(input[i]) + 1);
	} else {
		mostNum.set(input[i], 1);
	}
}

let maxCount = 0;
let mostNumArr = [];
for (let value of mostNum.keys()) {
	if (maxCount < mostNum.get(value)) maxCount = mostNum.get(value);
}
for (let value of mostNum.keys()) {
	if (maxCount === mostNum.get(value)) mostNumArr.push(value);
}

let value3 = mostNumArr.length === 1 ? mostNumArr[0] : mostNumArr[1];

// λ²”μœ„
let value4 = input[input.length - 1] - input[0];

console.log(value1);
console.log(value2);
console.log(value3);
console.log(value4);

 

 

 

λ°˜μ‘ν˜•

λŒ“κΈ€