Skip to content
Reto #5Basic 2 solvedOpen

El Grito Más Fuerte

bash · c · c++ · go · java · javascript · python · r · rust · typescript

En el festival anual del pueblo, se realiza un concurso para ver quién puede "gritar" más fuerte en el chat de la comunidad. El ganador es aquel cuyo mensaje contenga la mayor cantidad de signos de cierre de exclamación (!).

Tu tarea es procesar los mensajes de los participantes y determinar quién es el ganador.

Entrada

  • La primera línea contiene un número entero N, el número de participantes.
  • Las siguientes N líneas contienen el nombre de un participante (una sola palabra sin espacios), seguido de un espacio y luego su mensaje (que puede contener cualquier carácter y espacios).

Salida

  • El nombre del ganador y la cantidad total de signos ! que utilizó en su mensaje, separados por un espacio.
  • En caso de empate en la cantidad de signos, el ganador será la primera persona que aparezca en la lista con esa cantidad máxima.

Restricciones

  • 1 ≤ N ≤ 50
  • El nombre de cada participante tiene entre 1 y 20 caracteres.
  • Cada mensaje tiene entre 1 y 200 caracteres.

Example

Input
3
Juan ¡Hola!
Maria ¡¡Si!!
Pedro Ok
Output
Maria 2

Maria tiene 2 signos '!', Juan tiene 1 y Pedro tiene 0. Maria gana por tener la mayor cantidad.

Community solutions

Each one passed 100% of the test cases in the sandbox.

bash+5 karma
read -r n
n=${n%$'\r'}
max_count=-1
winner=""

for ((i=0; i<n; i++)); do
    read -r nombre mensaje
    nombre=${nombre%$'\r'}
    
    exclamaciones="${mensaje//[^!]/}"
    cantidad="${#exclamaciones}"
    
    if (( cantidad > max_count )); then
        max_count=$cantidad
        winner=$nombre
    fi
done

echo "$winner $max_count"
Alango+5 karma
package main
import (
    "bufio"
    "fmt"
    "os"
    "strconv"
    "strings"
)
func contar(mensaje string) int{
    total := 0
    for i := 0; i < len(mensaje); i++{
        if (mensaje[i]) == '!'{
            total++
        }
    }
    return total
}
func main() {
    scanner := bufio.NewScanner(os.Stdin)
    var nombre string
    max := -1
    scanner.Scan()
    num_personas, _ := strconv.Atoi(strings.TrimSpace(scanner.Text()))
    
    for j := 0; j < (num_personas); j++{
        scanner.Scan()
        linea := scanner.Text()

        
        partes := strings.SplitN(linea, " ", 2)

        nombre2 := partes[0]
        mensaje := ""
        if len(partes) > 1 {
            mensaje = partes[1] 
        }
        if contar(mensaje) > max{
            max = contar(mensaje)
            nombre = nombre2
        }
    }
    fmt.Print(nombre," ",max)
}
HomeEventsBlogResourcesCoursesTeam