μλ₯Ό μ²λ¦¬νλ κ²μ ν΅κ³νμμ μλΉν μ€μν μΌμ΄λ€. ν΅κ³νμμ Nκ°μ μλ₯Ό λννλ κΈ°λ³Έ ν΅κ³κ°μλ λ€μκ³Ό κ°μ κ²λ€μ΄ μλ€. λ¨, Nμ νμλΌκ³ κ°μ νμ.
μ°μ νκ· : Nκ°μ μλ€μ ν©μ NμΌλ‘ λλ κ°
μ€μκ° : Nκ°μ μλ€μ μ¦κ°νλ μμλ‘ λμ΄νμ κ²½μ° κ·Έ μ€μμ μμΉνλ κ°
μ΅λΉκ° : Nκ°μ μλ€ μ€ κ°μ₯ λ§μ΄ λνλλ κ°
λ²μ : Nκ°μ μλ€ μ€ μ΅λκ°κ³Ό μ΅μκ°μ μ°¨μ΄
Nκ°μ μκ° μ£Όμ΄μ‘μ λ, λ€ κ°μ§ κΈ°λ³Έ ν΅κ³κ°μ ꡬνλ νλ‘κ·Έλ¨μ μμ±νμμ€.
첫째 μ€μ μμ κ°μ N(1 β€ N β€ 500,000)μ΄ μ£Όμ΄μ§λ€. λ¨, Nμ νμμ΄λ€. κ·Έ λ€μ Nκ°μ μ€μλ μ μλ€μ΄ μ£Όμ΄μ§λ€. μ λ ₯λλ μ μμ μ λκ°μ 4,000μ λμ§ μλλ€.
첫째 μ€μλ μ°μ νκ· μ μΆλ ₯νλ€. μμμ μ΄ν 첫째 μ리μμ λ°μ¬λ¦Όν κ°μ μΆλ ₯νλ€.
λμ§Έ μ€μλ μ€μκ°μ μΆλ ₯νλ€.
μ μ§Έ μ€μλ μ΅λΉκ°μ μΆλ ₯νλ€. μ¬λ¬ κ° μμ λμλ μ΅λΉκ° μ€ λ λ²μ§Έλ‘ μμ κ°μ μΆλ ₯νλ€.
λ·μ§Έ μ€μλ λ²μλ₯Ό μΆλ ₯νλ€.
μμ μ
λ ₯ 1
5
1
3
8
-2
2
μμ μΆλ ₯ 1
2
2
1
10
μμ μ
λ ₯ 2
1
4000
μμ μΆλ ₯ 2
4000
4000
4000
0
μμ μ
λ ₯ 3
5
-1
-2
-3
-1
-2
μμ μΆλ ₯ 3
-2
-2
-1
2
μμ μ
λ ₯ 4
3
0
0
-1
μμ μΆλ ₯ 4
0
0
0
1
(0 + 0 + (-1)) / 3 = -0.333333... μ΄κ³ μ΄λ₯Ό 첫째 μ리μμ λ°μ¬λ¦Όνλ©΄ 0μ΄λ€. -0μΌλ‘ μΆλ ₯νλ©΄ μλλ€.
const input = require('fs').readFileSync('/dev/stdin').toString().trim().split("\n").map(Number)
input.shift()
input.sort((a, b) => a-b)
const len = input.length
const sums = input.reduce((acc, cur) => acc+cur, 0)
const average = Math.round(sums/len)
const middle = input[Math.floor(len/2)]
const frequency = {}
for(let i = 0 ; i < len ; i ++) {
const curNum = input[i]
frequency[curNum] = frequency[curNum] ?? 0
frequency[curNum] += 1
}
const maxFrequency = Math.max(...Object.values(frequency))
const maxFrequencies = []
for(const key in frequency) {
const curVal = frequency[key]
if(curVal === maxFrequency) {
maxFrequencies.push(key)
}
}
maxFrequencies.sort((a, b) => a-b)
let mostFrequentVal
if(maxFrequencies.length > 1) {
mostFrequentVal = maxFrequencies[1]
} else {
mostFrequentVal = maxFrequencies[0]
}
const rangeOfNums = (input.at(-1) - input[0])
console.log(
average+"\n"+
middle+"\n"+
mostFrequentVal+"\n"+
rangeOfNums
)