DEV Community

Altencir Junior
Altencir Junior

Posted on

Resolvendo problemas no HackerRank: Contando Strings repetidas

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];
}
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

Assim, concluímos mais um Resolvendo problemas no HackerRank: até a próxima.

Top comments (0)