DEV Community

Cover image for Como resolver el Problema 5 (Nivel Basico Concurso de Programación CUVALLES 2024B)
3nginuity
3nginuity

Posted on

Como resolver el Problema 5 (Nivel Basico Concurso de Programación CUVALLES 2024B)

Problema

Problema 5 (Nivel Basico Concurso de Programación CUVALLES 2024B)

Palabras Cortas (Autor: Jorge Ernesto Castillo Rizo)

Escribe un programa que identifique y cuente las palabras de 3 caracteres o menos en un texto dado (S) por el usuario. Ignora mayúsculas, minúsculas y signos de puntuación, y devuelve la cantidad total de palabras cortas encontradas.
Nota: Todos los caracteres en S denotan valores de la Aa - Zz.

Entrada: Una línea de texto.
Salida: Un número que representa la cantidad total de palabras con 3 caracteres o menos.

Ejemplo:
Entrada:

 El sol se oculta en el horizonte, y la noche llega.

Enter fullscreen mode Exit fullscreen mode

Salida:

7
Enter fullscreen mode Exit fullscreen mode

Explicación de la Solución

1. Comprender el Problema

El objetivo es contar cuántas palabras dentro de una frase tienen 3 caracteres o menos.

  • Entrada: Un texto con palabras separadas por espacios.
  • Salida: Un número que representa la cantidad de palabras cortas.
  • Restricciones: No se deben considerar signos de puntuación y las mayúsculas/minúsculas no afectan el conteo.

Ejemplo:

Entrada:  "El sol se oculta en el horizonte, y la noche llega."
Salida:    7
Enter fullscreen mode Exit fullscreen mode

2. Identificar los Pasos para Resolverlo

Para llegar a la solución, descomponemos el problema en pasos más pequeños:

  1. Eliminar los signos de puntuación → Porque el problema indica que deben ignorarse.
  2. Dividir el texto en palabras → Para analizar una por una.
  3. Contar cuántas palabras tienen 3 caracteres o menos → Usamos un contador.
  4. Imprimir el resultado → Mostramos la cantidad total de palabras cortas.

3. Diseño de la Solución (Paso a Paso)

1️⃣ Preprocesar el texto:

  • Eliminar signos de puntuación.
  • No es necesario convertir a minúsculas porque no afecta el conteo.

2️⃣ Dividir la frase en palabras:

  • Usamos el espacio como separador.

3️⃣ Recorrer cada palabra y contar las que cumplan la condición:

  • Si una palabra tiene 3 caracteres o menos, sumamos 1 al contador.

4️⃣ Mostrar el resultado final:

  • Imprimir el valor del contador.

📝 Código en Python

# Define una función llamada solution que recibe una lista de palabras
def solution(words):
    # Inicializa un contador en 0
    c = 0
    # Itera sobre cada palabra en la lista de palabras
    for word in words:
        # Limpia la palabra: crea una nueva cadena solo con caracteres alfanuméricos
        # join: une todos los caracteres que cumplen la condición isalnum()
        clean_word = ''.join(char for char in word if char.isalnum())
        # Verifica si la palabra limpia tiene 3 o menos caracteres y no está vacía
        if len(clean_word) <= 3 and clean_word: 
            # Incrementa el contador si se cumple la condición
            c += 1
    # Devuelve el total de palabras que cumplen con el criterio
    return c

# Lee una línea de entrada y la divide en palabras
words = input().split()
# Imprime el resultado de llamar a la función solution con las palabras
print(solution(words))

Enter fullscreen mode Exit fullscreen mode

💡 Complejidad del Algoritmo

La solución tiene una complejidad de O(n), donde n es el número de palabras en la frase. Esto se debe a que:

  • La limpieza del texto es O(m), donde m es el tamaño del string.
  • La división en palabras es O(n).
  • El recorrido de la lista de palabras y el conteo es O(n).
  • En total, la solución sigue una complejidad lineal O(n + m), lo cual es eficiente para este problema.

Link al repositorio

Top comments (0)