Если вы работаете в сфере ИТ или ИТ, то наверняка когда-нибудь сталкивались с термином «Конкурсное программирование». Что ж, это не что иное, как интеллектуальный спорт, когда участники пытаются решить проблему, достигнув желаемого результата для заданного набора входных данных. Если вы новичок в программировании и хотите начать заниматься соревновательным программированием, эта статья наверняка поможет вам в вашем путешествии.

Изучение языка

  1. C ++ - безусловно, самый популярный язык программирования, используемый в любых соревнованиях по программированию. Это очень быстро, гибко и приемлемо во всех конкурсах программирования. В библиотеку STL C ++ встроено множество алгоритмов и структур данных, которые сделают вашу жизнь намного проще.
  2. JAVA - еще один классический язык программирования, который также очень широко используется в соревновательном программировании. Это не такой удобный для новичков синтаксис, но, тем не менее, очень мощный язык. Он имеет множество встроенных контейнеров, функций и Big Integer Class, которые чрезвычайно полезны во многих ситуациях.
  3. PYTHON - это самый удобный для начинающих язык, с которого можно начать работу. У него очень простой синтаксис, и вы будете писать много сокращенных кодов по сравнению с C ++ или JAVA. Однако, если говорить о времени компиляции, оно самое медленное из всех, поскольку это интерпретируемый язык высокого уровня. Но, учитывая, что такое количество конкурсов действительно дает программе Python несколько дополнительных секунд для запуска. Таким образом, вам не нужно беспокоиться о времени в большинстве случаев и вы можете выбрать этот язык в качестве основного.

Практика и оттачивание своих навыков

Существует множество конкурентоспособных сайтов, с которых вы можете сразу же начать свое путешествие по программированию. Вот список некоторых из самых популярных:

  1. HACKERRANK -

Это самый удобный для новичков сайт, и я рекомендую вам начать использовать этот сайт, пока вы не познакомитесь с кодированием. Вы можете практиковать многие популярные языки, такие как C, C ++, Java, Python и т. Д., А также освежить свои навыки решения проблем. Вам также предоставляются редакционные статьи, к которым вы можете обратиться, если не понимаете проблему.

2. HACKEREARTH -

HackerEarth - индийская компания, специализирующаяся на конкурентном программировании и найме. Он проводит ежемесячные циклы, которые представляют собой 9-дневные задания, а также более короткие задания, на которых вы можете начать кодировать и получить оценку в соответствии с вашей эффективностью. Здесь также проводятся соревнования, проводимые различными колледжами Индии. Вы можете начать здесь, как только хорошо познакомитесь с кодированием.

3. CODECHEF -

CodeChef также является индийским сайтом кодирования, на котором ежемесячно проводятся 3 конкурса: Long Challenge (10-дневное испытание) и более короткие соревнования Cook-Off и Lunchtime Challenge. У них также есть свой флагманский конкурс CodeChef SnackDown, который проводится ежегодно. У них есть хорошо написанные блоги и редакционные статьи, которые помогут вам легко понять многие концепции и проблемы.

4. КОДЕФОРСЫ -

CodeForces - российский сайт, на котором проводятся качественные конкурсы с максимальной частотой, иногда до двух раз в неделю. Конкурсы длятся 2 часа, до 5–6 в месяц. Сайт является одной из самых популярных онлайн-платформ для программирования, имеет множество уникальных функций и сильное и огромное сообщество для оказания помощи. Я рекомендую начинать кодирование здесь только тогда, когда вы очень хорошо знакомы с кодированием, потому что большинство проблем здесь, вероятно, слишком сложны для новичков.

5. TOPCODER -

TopCoder - это сайт, управляемый США, на котором размещаются 1,5-часовые матчи SRM (Single Round Matches), что дает вам возможность напрямую соревноваться с другими программистами. Topcoder также организует ежегодный турнир Topcoder Open. Я бы рекомендовал переходить на эту платформу только тогда, когда вы продвинуты и хорошо разбираетесь в кодировании.

6. LEETCODE

У LeetCode много проблем, но вы должны помнить, что у этого сайта есть более сложные проблемы. Каждую неделю они проводят соревнования по программированию, в которых вы можете принять участие и установить свой хороший рейтинг. Это очень хорошая платформа для подготовки к собеседованиям по кодированию и техническим раундам различных ведущих технологических компаний.

Это всего лишь несколько популярных сайтов, которые я упомянул, но есть гораздо больше, например SPOJ, InterviewBit, Project Euler, а также архивы с очень популярных глобальных соревнований по программированию, таких как Google Code Jam, Facebook Hackercup, ACM ICPC и т. Д.

Все, что вам нужно сделать, чтобы начать, - это желание учиться

Ресурсы для обучения (книги)

Есть множество руководств, с которых вы начнете, и отличных книг, которые помогут вам построить бетонный фундамент.

Книги

  1. Введение в алгоритмы -

Это обширная книга, написанная авторами - Корменом, Лейзерсоном, Ривестом и Штайном. Это очень хорошо может быть известно как Библия программирования. Вы получите все алгоритмы и их концепции, основы, реализацию и работу в мельчайших подробностях.

2. Взломать интервью по кодированию -

Это еще одна популярная книга, написанная Гейл Макдауэлл. В нем много популярных вопросов по программированию и хорошо объясненные ответы. Он дает вам важные советы, которые очень полезны в программировании. Тем не менее, Cracking the Coding, so Interview почти полностью написано на Java, поэтому, если вы плохо знакомы с JAVA, вы можете почувствовать некоторые трудности в понимании.

Учебники

Есть много полезных руководств. Помимо упомянутых выше платформ для кодирования, вы также можете найти несколько руководств на Commonlounge, GeeksForGeeks и несколько курсов на Coursera.

Стать хорошим кодером

Соревновательное программирование - это такой же вид спорта, как и любой другой. Вы учитесь, как это делать, и начинаете практиковаться, чтобы стать в этом лучше. Изучите новые концепции и основы, но не останавливайтесь на достигнутом. Выполняйте и практикуйте их с самоотдачей.

Знания без практики бесполезны. Практика без знаний опасна.

Вы не сможете все понять в одночасье. Вы должны быть последовательными, учиться, понимать на своих ошибках, много работать и много практиковаться. Ставьте себе цели, расписания или все, что вам нужно, чтобы быть последовательными, но продолжайте идти и не сдавайтесь легко!