π λ¬Έμ
ꡬνν΄μΌ νλ κ²μ
νλΌλ―Έν°λ‘ μ λ¬λ°μ 1οΈβ£λͺ©λ‘μ μ€λ¦μ°¨μμΌλ‘ μ λ ¬νκ³ 2οΈβ£μ λ ¬λ λͺ©λ‘μ μννλ©° ν΄λΉ μμμ μ λ ₯ νμλ₯Ό Mapμ μ λ°μ΄νΈνλ€.
2οΈβ£μ μμ μ΄ μλ£λλ©΄ ν΄λΉ Mapμ λ°λ³΅μν€λ©° μ λ ₯ κ° λͺ©λ‘μμ κ°κ°μ λλ¬΄κ° μ°¨μ§νλ λΉμ¨μ κ³μ°νμ¬ μΆλ ₯νλ€.
πΉ μλ
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
const fs = require("fs");
const inputs = fs.readFileSync("dev/stdin").toString().trim().split("\n");
//1οΈβ£λͺ©λ‘μ μ€λ¦μ°¨μμΌλ‘ μ λ ¬νλ€.
const orderedInputs = inputs.sort();
const totalCount = orderedInputs.length;
//2οΈβ£-1 λλ¬΄λ³ μ°¨μ§ λΉμ¨μ μ μ₯νκΈ° μν Map λ³μ μμ±
const dictionary = new Map();
//2οΈβ£-2 μ λ ¬λ λͺ©λ‘μ μννλ©° ν΄λΉ μμμ μ
λ ₯ νμλ₯Ό μ
λ°μ΄νΈνλ€.
orderedInputs.forEach((input) =>
dictionary.set(input, (dictionary.get(input) || 0) + 1)
);
//3οΈβ£ 2οΈβ£μ μμ
μΌλ‘ Map λ³μμΈ dictionaryμλ λλ¬΄λ³ μ
λ ₯ νμκ° μ μ₯λμ΄ μμΌλ―λ‘ λ°±λΆμ¨μ ꡬνμ¬ μΆλ ₯νλ€.
// λ°±λΆμ¨μ μμμ λ€λ²μ§Έ μ리κΉμ§ λ°μ¬λ¦Ό ν΄μΌ νλ―λ‘ toFixed λ©μλλ₯Ό μ¬μ©νλ€.
const result = [];
for (let [key, value] of dictionary) {
result.push(`${key} ${((value / totalCount) * 100).toFixed(4)}`);
}
console.log(result.join("\n"));