The Complete Beginner's Guide to Competitive Programming
Before moving on to main points please learn a language to some extent. Learn basic operations like looping, data structure handling, file handling and other commonly used stuff. My suggestion is you better go with Python and learn STL(standard template library) and you should learn where to implement the STL. Be perfect in basics concepts of programming before you code.
- Do participate in contests
- Solve as many problems as you can
- Learn algorithms and data-structure
- Be passionate
- Time management
- Logical Thinking
- Choice of language
Do participate in contests
Please do participate in contests. Why because participating in the contest you will learn a lot while solving those problems. But please make sure that you face a lot of difficulties while solving these problems in the contest and please don’t get discouraged (or) demotivated by seeing your rating in coding platforms. One more thing before participating in a contest make sure practice a lot of problems with these coding platforms.
Competitive coding contests for beginners are:
- Hackerrank-week of code, Hour rank.
- Codechef long challenge every month they will conduct. (First three problems are especially for beginners only requirement is to know the basics of programming languages no need using of any kind of data structures and algorithms but rest of the problems require some knowledge on algorithms and data-structure).
Solve as many problems as you can:
Solve many different problems from different coding platforms. But, for beginners first, solve the problems in the given below websites.
- Solve Algorithms Code Challenges | HackerRank
- Basics of Input/Output Practice Problems Basic Programming | HackerEarth
- Programming Competition, Programming Contest, Online Computer Programming | CodeChef
- CS Academy
Solve as many problems from the above websites before participating in any contest.
Learn algorithms and data-structure:
You have to learn new standard algorithms and try to implement them in real-world problems. While solving these problems you will learn how to encode certain problems. Learn some mathematics also, check this article: What is the mathematical background necessary for competitive programming?
Reference books for algorithms and data-structure:
- Introduction to Algorithms
- The Algorithm Design Manual
- Hacker's Delight (Mathematical Approach)
- Algorithms Unlocked (Recommended for Beginners)
- Classic Data Structures (Recommended for Beginners)
Many people do learn competitive programming just for the sake of getting placed in top tech companies. Don’t consider it as competitive programming thinks of it as sports. Why I am calling it sports, because you should do it just for fun and to gain knowledge nothing more than that.
Time management :
If you are not able to solve a particular problem in time then go for other problems. Search for the thread of that problem and try to understand and implement by yourself. Practice makes man perfect. This piece of advice goes well with competitive programming. Just solve as much problem as you can this will increase your level of confidence as well as increase your problem-solving rate. The Python-ic way of saying "What to do?":
Coding is nothing but solving a problem, it requires logical thinking. Before solving a problem make sure that you are able to write code on paper, then try to implement it as a code. Don't go straight for the hardest problem. First go easy then try to increase the difficulty level as you progress.
Rating given by coding platforms are not at all important those are just your achievements. Never discourage yourself or demotivate by watching other profiles.
Choice of Language:
Language doesn't matter in competitive programming. Try to choose a language of your comfort and stick with it. Modern languages like Python, Ruby, Go, R etc. are easy to write fifty lines of programs within simple two or three lines of code.
Last but not least patience is more important than anything. Competitive programming is not one night process that can be done, it takes years of practice and your hard work.