Olá, seja bem vindo a mais um Resolvendo problemas no HackerRank: No caso de hoje,vamos resolver um problema de campeonato de programação. Vejamos mais informações com a explicação detalhada e sua resolução.
ACM ICPC Team -
Várias pessoas estarão presentes nas Finais Mundiais do ACM-ICPC . Cada um deles pode ser bem versado em vários tópicos. Dada uma lista de tópicos conhecidos por cada participante, apresentados como strings binárias, determine o número máximo de tópicos que uma equipe de 2 pessoas pode conhecer. Cada assunto tem uma coluna na string binária, e um '1' significa que o assunto é conhecido enquanto '0' significa que não é. Determine também o número de equipes que conhecem o número máximo de tópicos. Retorna uma matriz inteira com dois elementos. O primeiro é o número máximo de tópicos conhecidos e o segundo é o número de equipes que conhecem esse número de tópicos.
Exemplo:
- n= 3
- topics = ['10101','11110','00010']
Vejamos o código a seguir:
function acmTeam(topic) {
// Write your code here
let arr = [];
let max = 0;
for (let i=0; i < topic.length; i++) {
for (let j= i+1; j < topic.length; j++) {
let countOne = 0;
for (let k=0; k<topic[i].length; k++) {
if (topic[i][k] | topic[j][k]) {
countOne++;
}
}
if (countOne > max) {
max = countOne;
}
arr.push(countOne);
}
}
return [max, arr.filter(e => e == max).length];
}
Este código implementa uma função chamada "acmTeam" que recebe um array de strings chamado "topic". A função tem como objetivo determinar quantas equipes podem ser formadas a partir das strings de "topic" em que cada equipe é composta por duas pessoas e a habilidade de cada equipe é a soma das habilidades individuais de cada membro.
Para determinar a habilidade de uma equipe, a função compara as strings dos membros da equipe posição por posição, contando quantas posições possuem um valor "1" em pelo menos uma das strings. O número resultante é a habilidade da equipe.
A função armazena o número máximo de posições com valor "1" encontrado ao percorrer todas as equipes possíveis e retorna uma array com dois valores: o número máximo de posições com valor "1" encontrado e a quantidade de equipes que possuem essa habilidade máxima.
O código usa três loops for aninhados para comparar todas as equipes possíveis, um loop para percorrer a primeira string, outro para percorrer a segunda string e um terceiro para percorrer cada posição da string e comparar os valores. A variável "arr" armazena o número de posições com valor "1" para cada equipe e a variável "max" armazena o número máximo encontrado. A função retorna um array com os valores de "max" e a quantidade de vezes que ele aparece em "arr".
O resultado será:
4 5
10101
11100
11010
00101
input:5 2
Assim, concluímos mais um Resolvendo problemas no HackerRank: até a próxima.
Top comments (0)