Programación… Programación Competitiva… ¿Te enseña a pensar? . Si eres programador, es posible que hayas entendido el significado profundo de estas líneas citadas por Steve Jobs y también hayas experimentado que, incluso después de apagar tu computadora, sigues pensando en cosas de programación o código que has escrito en tu proyecto. Una vez que ingresa a la programación, simplemente no aprende a codificar, sino que también aprende el «arte de pensar» , al dividir su código en partes más pequeñas y luego usar su creatividad basada en la lógica.para resolver un problema desde diferentes ángulos. Programar es divertido, programar es un ejercicio para tu cerebro, programar es un deporte mental y cuando este deporte se lleva a cabo en Internet con un programador deportivo como concursante, entonces se llama Programación Competitiva . Revisa lo que dice Wikipedia sobre la Programación Competitiva.
¿Por qué deberías prepararte para este juego y participar en él?
La programación es un rol desafiante y una vez que ingrese a este campo, encontrará nuevos desafíos y es posible que deba resolver algunos problemas que nadie ha resuelto antes o su solución no existe en ninguna parte. En ese momento, se espera que encuentre una solución en el menor tiempo posible utilizando su capacidad lógica y de resolución de problemas. Entonces, el único y claro objetivo detrás de esta programación competitiva es “ Preparar a un programador para que aumente su capacidad lógica y sea capaz de escribir código para la situación desafiante. ”Otra razón es que muchas grandes empresas, como Google, Facebook. Microsoft, Amazon contrata a través de la programación competitiva, por lo que si desea ingresar a estas empresas, entonces realmente necesita ensuciarse las manos en la programación competitiva. No importa si eres un programador novato o si has escrito código antes, te diremos algunos pasos, enfoques y consejos para prepararte para la programación competitiva. Vamos a discutir eso en detalle. Tenga en cuenta que debe ser competente en lo siguiente:
- Cualquier sintaxis de lenguaje de programación (Elija cualquiera pero muy recomendable C / C++ / Java ).
- Análisis de algoritmos de complejidad temporal y espacial .
- Capacidad para pensar en una solución de fuerza bruta.
- Buena práctica de todas las estructuras de datos como array, lista, pila, cola, árbol, gráfico, Trie, etc.
¿Cómo prepararse para la Programación Competitiva?
1. Elija un lenguaje de programación:En primer lugar, debe elegir un lenguaje de programación con el que se sienta más cómodo y aprender su sintaxis. Puede ser cualquier lenguaje C, C++, Java, Python o cualquier lenguaje de programación. Los lenguajes de programación son una herramienta a través de la cual puede comunicarse con la computadora e indicarle qué hacer. C++, C o Java es un lenguaje de programación más rápido en comparación con cualquier otro lenguaje. También está permitido su uso en cualquier desafío de codificación o entrevistas. Así que es bueno si eliges uno de estos tres, aún así no hay restricción si te sientes cómodo con otro idioma. Si es un principiante, puede optar por Python porque es fácil de aprender y la sintaxis es fácil de usar. Si tiene al menos una retención intermedia en cualquiera de los lenguajes de programación, no tendrá dificultades para escribir el código usando la sintaxis del mismo.
2. Comprenda el concepto de complejidad de tiempo y espacio : en la mayoría de los casos, existe más de una solución para un problema, por lo que debe encontrar la mejor solución, es decir, una óptima, y eso se decide por cuánto tiempo y espacio que ocupa un algoritmo para resolver un problema. Entonces, es muy importante aprender sobre estos dos conceptos para escribir una solución óptima al problema.
3. Aprender los fundamentos de las estructuras de datos y los algoritmos: DSA es el corazón de la programación y no puede ignorarlo mientras resuelve problemas de codificación en la programación competitiva. Array, Linked List, Stack, Queue, Tree, Trie, Graph, Sorting, Recursion, Dynamic Programming, todos estos componentes básicos de DSA lo ayudarán a convertirse en un buen programador. Lo más importante que necesita saber qué, cuándo y dónde aplicarlos. Significa qué estructura de datos es adecuada para qué tipo de problema para obtener la solución óptima. Debe saber cómo aplicar una combinación perfecta de ambos en el problema de codificación.
4. Acepta el desafío y resuelve problemas de codificación: has aprendido un lenguaje de programación, has aprendido la complejidad del tiempo y el espacio y también has cubierto los fundamentos de DSA, ahora es el momento de tomar el cuchillo en tu mano y matar al león en el selva. Sí… necesitas participar en desafíos de codificación en diferentes plataformas de codificación. Antes de participar en un concurso, sería genial que practicaras para algunos desafíos por tu cuenta y luego participaras allí. Si está buscando los recursos de estas plataformas de codificación, hay muchos sitios, como Geeksforgeeks , Codeforces , Codechef , Topcoder , SPOJ. Comience desde el nivel básico en estos sitios y una vez que construya la confianza, salga de su zona de confort y gradualmente intente resolver los problemas complejos. A continuación se presentan algunos puntos que debe tener en cuenta una vez que comience a resolver problemas en estos sitios…
- Debe comprender los casos de entrada, salida y prueba en estas plataformas. Consulta el enlace ¿Cómo empezar con la Programación Competitiva? .
- Estas plataformas ejecutan su código en muchas entradas, luego sacan la salida y la almacenan en un solo lugar. También tienen el código de autor y el código de autor es el código correcto para el problema. Ejecutan el mismo conjunto de entradas en el código del autor y crean las salidas y, después de eso, hacen coincidir estas dos salidas. Si estos dos resultados coinciden, su solución se considera aceptada y su código debe pasar todos los casos de prueba para ser aceptado.
- Es posible que se congele al principio una vez que vea los problemas en estas plataformas de codificación y piense que no está hecho para eso o que su capacidad de pensamiento no es mucho mayor para resolver estas preguntas. La razón es que, como principiante, solo conoce la sintaxis del idioma y algunos bucles o funciones básicos, por lo que cuando se encuentra con estos desafíos, se congela y comienza a dudar de sus capacidades, por lo que no debe hacer eso. Debe comprender que hay un proceso para aprender programación competitiva y debe pasar gradualmente del nivel 0 al nivel superior.
5. Practica y hazlo regularmente: tu paciencia, dedicación y constancia son muy importantes para convertirte en un buen programador competitivo. Siga practicando las preguntas de codificación todos los días en estas plataformas o también puede tomar la ayuda de una pizarra para resolver las preguntas de codificación, pero lo importante es hacerlo regularmente. No cometa el error de tomar un descanso una vez que comience. Apéguese a él, sin importar qué tan difícil sea el problema o cuánto tiempo le tome resolver un solo problema de codificación. Participa en diferentes concursos de codificación y aprende de otros programadores. Tu práctica diaria te convierte en un codificador perfecto, un buen solucionador de problemas y podrás encontrar una estructura de datos adecuada para un problema específico y eso es muy importante en el desarrollo de software. Puntas:
- Como principiante en la programación competitiva, es como dar un trabajo de IIT a un estudiante de 5º o 6º estándar y luego pedirle que responda las preguntas. Sentirá lo mismo una vez que conozca la sintaxis, el bucle, la función y todo, pero no podrá resolver esos problemas de codificación y eso está completamente bien. Entiende que todos los principiantes pasan por esta fase.
- Cuanto más alto sea el envío, más fácil será el problema en estas plataformas de codificación, por lo que puede ordenar estas preguntas según la cantidad de personas que las resolvieron.
- Cree comunidades e intente encontrar personas de ideas afines que tengan diferentes conjuntos de habilidades para que puedan aprender unos de otros, también si está en la universidad, forme un equipo y participe en ACM ICPC .
- Puede descargar una de las aplicaciones Code Buff que lo ayudará mucho a recibir la notificación de los concursos de codificación de programación competitivos que se realizan en tantas plataformas diferentes. También permite al usuario configurar un recordatorio.
- Para saltar a la programación competitiva, puede seguir un enfoque de aprendizaje basado en proyectos en el que, una vez que conozca la sintaxis del lenguaje y los fundamentos básicos, puede crear múltiples proyectos desafiantes y después de hacer muchos proyectos se dará cuenta de cómo funciona la lógica en desarrollo y que le ayudará a aumentar la capacidad de programación. Después de eso, puede pasar a la programación competitiva y se dará cuenta de que manejar esas preguntas de la programación competitiva ahora es más fácil y ahora puede hacerlo muy bien.
La programación realmente necesita mucha paciencia, así que no te desanimes o NO TE RINDAS SI RECIBES RESPUESTAS INCORRECTAS . Este es el punto donde la mayoría de la gente pierde interés en la programación. Sigue intentándolo durante un día, una semana o un mes si una voz dentro de tu cabeza te dice que tu método es el correcto. Si no puede encontrar una solución, búsquela en Google, pida ayuda si no entiende el tema, lea los diversos enfoques que los codificadores tomaron para resolver el problema, pero no se dé por vencido. Además, puede leer la solución solo si está completamente seguro de que ha hecho un gran esfuerzo y ahora no puede hacer nada. Pero asegúrese de codificar nuevamente el mismo problema. Empezarás a mejorar día a día solo y solo si mantienes tu constancia y no te detienes.
Adjunto este artículo https://www.geeksforgeeks.org/competitive-programming-a-complete-guide/ ya que cubre los recursos necesarios y debe hacer preguntas que son una parte esencial de su viaje de CP.
Espero que ayude. La mejor de las suertes y feliz codificación.
El mayor error que cometen los programadores es probablemente desanimarse y no practicar lo suficiente. O practicando solo en problemas en los que sienten que son buenos. – Derek Kisman, también conocido como Snapdragon
Cursos relacionados
Programación Competitiva – Curso en Vivo
La programación competitiva es una manera perfecta de subir de nivel tu juego de programación. Ya sea descifrando las entrevistas de SDE o estando en la cima de las competencias de codificación, la programación competitiva puede facilitarle mucho las cosas. Para empezar, asegúrese de que su lenguaje de programación y sus fundamentos sean claros y prepárese para mejorar sus habilidades de resolución de problemas con nuestro Curso de programación competitiva: en vivo .
Publicación traducida automáticamente
Artículo escrito por anuupadhyay y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA