//### Desafio - Contagem repetida de números |
Neste desafio sua tarefa será ler vários números e em seguida dizer quantas vezes cada número aparece, ou seja, |
deve-se escrever cada um dos valores distintos que aparecem na entrada por ordem crescente de valor. |
//### Entrada |
A primeira linha de entrada contem um único inteiro N, que indica a quantidade de valores que serão lidos para X (1 ≤ N ≤ 2000) logo em seguida. |
Com certeza cada número não aparecerá mais do que 20 vezes na entrada de dados. |
//### Saída |
Imprima a saída de acordo com o exemplo fornecido abaixo, indicando quantas vezes cada um deles aparece na entrada por ordem crescente de valor. |
|--------------------------------------------| |
| Exemplo de Entrada | Exemplo de Saída | |
|--------------------|-----------------------| |
| 7 | 4 aparece 1 vez(es) | |
| 8 | 8 aparece 2 vez(es) | |
| 10 | 10 aparece 3 vez(es) | |
| 8 | 260 aparece 1 vez(es) | |
| 260 | | |
| 4 | | |
| 10 | | |
| 10 | | |
|--------------------------------------------| |
*/ |
|
//Código do desafio: |
/** |
* AVISO! |
* Na saída proposta da DIO é exigido que a expressão 'vez(es)' seja impressa não importa a quantidade de repetições. |
* Nesta solução, é implementado a saída tanto em singular quanto no plural. |
*/ |
const inputs = [ //para uso local |
'7', |
'8', |
'10', |
'8', |
'260', |
'4', |
'10', |
'10', |
] //para uso local |
|
|
// const nCases = parseInt(gets()) //para uso na DIO |
const nCases = parseInt(inputs[0]) //para uso local |
let input = 0 |
let numbers = [] |
|
for (let i = 1; i <= nCases; i++) { |
// input = parseInt(gets()) //para uso na DIO |
input = parseInt(inputs[i]) //para uso local |
|
if ((input < 1 || input > 2000)) { |
//skip invalid entry |
continue; |
} |
|
numbers = [...numbers, input]; |
} |
|
const distinctNumbers = Array.from(new Set(numbers)) |
.sort((a, b) => a - b) |
.map(v => ([v, 0])) |
|
let countNumberMap = new Map(distinctNumbers) |
|
numbers.forEach(n => { |
countNumberMap.set(n, countNumberMap.get(n) + 1) |
}) |
|
for (const [number, times] of countNumberMap) { |
console.log(`${number} aparece ${times} vez${times > 1 ? 'es' : ''}`) // saída com singular ou plural |
// console.log(`${number} aparece ${times} vez(es)`) //saída exigida na DIO |
/* |
Nenhum comentário:
Postar um comentário