DEV Community

Altencir Junior
Altencir Junior

Posted on

Resolvendo problemas no HackerRank: Dividindo alimentos

Olá, seja bem vindo a mais um Resolvendo problemas no HackerRank: No caso de hoje, você é um rei que está dividindo a comida para o povo, pois tempos difíceis chegaram e o povo passa por dificuldades. Vejamos mais informações com a explicação e sua resolução.

Fair Rations -

Você é o governante benevolente do Castelo Rankhacker e hoje está distribuindo pão. Seus súditos estão em fila e alguns deles já têm alguns pães. Os tempos são difíceis e os estoques de alimentos do seu castelo estão diminuindo, então você deve distribuir o menor número possível de pães de acordo com as seguintes regras:

  • Cada vez que você dá um pão para alguém i, você também deve dar um pão para a pessoa imediatamente à frente ou atrás deles na fila (ou seja, pessoas i+ 1 ou i-1)

  • Depois que todo o pão for distribuído, cada pessoa deve ter um número par de pães.

Dado o número de pães já possuído por cada cidadão, encontre e imprima o número mínimo de pães que você deve distribuir para satisfazer as duas regras acima. Se isso não for possível, imprima NO.

Vejamos o código a seguir:

function fairRations(B) {
    // Write your code here
  let c = 0

  for (let i=0; i<B.length-1;i++) {
      if (B[i] % 2  !== 0) {
          B[i]++
          B[i+1]++
          c+=2 
      }
}
  return (B[B.length-1] % 2 == 0) ? c : 'NO'
}
Enter fullscreen mode Exit fullscreen mode

No código acima criamos uma variável c com valor inicial 0. Criamos também uma estrutura de repetição que irá passar por dentro do comprimento de B - 1, e adicionar +1. Se o index de B tiver o restante divisível por 2 diferente de 0, devemos adicionar 1 ao index do array dentro de B, e adicionar 1 ao array index e a propriedade Be por fim adicionar 2 a variável c. Retornarmos ao final o array de B com seu comprimento -1 e seu restante divisível por 2 idêntico a 0. Caso contrário, retornaremos uma string escrita "NO", onde iremos dizer que o rei não conseguiu dividir os alimentos.

O resultado será:

5
2 3 4 5 6

input: 4
Enter fullscreen mode Exit fullscreen mode

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

Top comments (0)