Before jumping on to the preparation for Competitive Coding, let us focus start with a basic example. If you are playing football, it is not enough to practice and show your skills in your locality. You need to compete in tournaments and get selected to play for your nation. Similarly, it is not good to limit yourself to practicing, developing projects if you are a coder.
You need to compete, think quicker than others. This helps to evaluate your skills with people around the globe. As you compete for a prize against several experienced coders, you can feel the heat of coding under pressure.
Many product-based companies like Google, Microsoft, Facebook, Amazon hire people based on their competitive coding skills. They sometimes conduct challenges around the world to hire people. The key factor you need to be concerned about for competitive coding is time. Time is the factor considered for evaluating most of the challenges and contests.
Competitive coding helps you think bigger, quicker, analyse fast. It also develops your problem-solving skills. Therefore, we can grade coding as a “good mental sport” based on competitive programming. So, if you plan to get into competitive coding and don’t know where to start, you have landed on the correct page for the Preparation for Competitive Coding.
What is Competitive Programming?
Competitive coding is mainly referred to as a mental sport in which you can take part, from anywhere in the world. It is primarily conducted in virtual mode; most of the students compete here, they solve challenges in a limited amount of time with all the required specifications.
You can code in any language, and there are no language barriers to solve. If you are starting preparation for Competitive Coding, the most preferred languages are Java and C++. Just keep in mind about these languages, we will discuss more of them further.
Some contests or challenges have levels. By upgrading each level, the difficulty of questions increases. Many websites help to practice competitive coding but don’t hurry to solve all those problems. Instead, experts say that sticking to one or two languages and websites helps you better analyze your problem.
Let’s see what Parikh Jain, a Founding member of Coding Ninjas has to say about the preparation for Competitive Coding
It is mainly recommended to start with the data structures to help you build the algorithms and write the code efficiently. So here are some handpicked topics of data structures:
- Linked List
- Priority Queue
- Basic Dynamic Programming
If you want to be one of the best programmers and dream of cracking the software developer engineering roles in top companies like Google, Microsoft, Walmart, Snapchat, Amazon, Flipkart, practice more sums on data structures.
Steps to Learn Competitive Programming
1. Choosing Programming Language:
You can do competitive programming in any programming language, but it is highly recommended that you choose one of C/C++ or Java. The reason is that the time of execution is a crucial factor in Competitive Programming. So, choosing a language with a better time of execution will surely give you a benefit.
2. Get Started With Data Structures:
If you want to be a good programmer, you need to master some topics like data structures and algorithms. Data structures help to optimise code and increase the efficiency of code. For example, we can calculate time and space complexity using data structures to help write the code without the wastage of memory and time. So spend time on data structures to develop the code efficiently.
3. Practice Algorithms:
To solve any problem, we need an algorithm first, which can help us track the solution. Solving the problems by finding the time complexity and space complexity can build fewer memory-consuming problems, making our code efficient. Most of the top companies like Google, Microsoft ask for an optimal algorithm rather than writing the entire code during interviews.
Experts suggest solving through algorithms than usual practice, which can help you think more efficiently and helps to develop your problem-solving skills. You can spend your time developing an efficient algorithm that gives a good solution. To become an expert in solving or finding algorithms, one needs to practice more data structure problems every day.
4. Participate in coding competitions:
Coding contests offer young, talented students and programmers the opportunity to measure their capabilities and compare themselves to other programmers worldwide, motivating them to practice more. These competitions also provide you with swags, jobs, internship opportunities, scholarships, mentorships, etc.
Many websites provide you with a platform to build your competitive programming skills. If you are a beginner, HackerRank would be one of the best places for you to start. A helpful thing that HackerRank provides to the users is that if you get stuck on some problem for a very long time and only pass some of the test cases, then you can download the test cases.
You can review your logic to do some modifications, and it will help in the thought process to think about corner test cases. But seeing the test cases is not always good; after some duration(about 2 or 3 months), you should be able to think which test case might give WA(wrong answer). And after the practice of 2 or 3 months, you can also start participating in contests on some of these famous sites:
You can participate in any of these contests globally, and some websites provide you with groups where you can develop your network and discuss problems and algorithms.
5. Keep Practicing:
Always keep yourself motivated enough to solve the problem. It will help you in enhancing your problem-solving skills. As now you have good knowledge of Data Structures and Algorithms, you can do well in competitive programming if you keep practicing continuously.
Competitive programming is difficult, and it’s okay when you take time to improve your skills initially because “Great things take time.” You need a lot of patience to solve complex problems. Just believe in yourself, and everything will be alright.
Resources for practicing competitive programming
There is a huge number of resources available online, but here are the top suggested resources by experts who work in top companies.
- Problems by Computer Science and Engineering Society (CSES).
- Guide to competitive programming by Antti Laaksonen.
- Competitive programming algorithms by experts around the world.
- Introduction to Algorithms from MIT(Massachusetts Institute of Technology) press.
- Competitive Programming 3 by Steven Halim
- Guide to Competitive Programming by Antti Laaksonen
- Programming challenges by Steven S Skiena
- The Algorithm Design Manual
- To do algorithms by CodeForces
Must-do coding problems for competitive programming
You can start with competitive programming from anywhere globally, but taking the right path to succeed is essential. Here is the list of problems by experts worldwide in competitive programming, which helps in increasing your chances of getting into top companies. These problems also include the questions asked in companies like Google, Microsoft, Flipkart, Amazon, etc.
- STL(Standard Template Library)/Collections
- Binary Search Applications
- Bit Manipulation
- Greedy Algorithms
- Modulo Arithmetic
- Dynamic Programming
- Segment Tree
- Graph Algorithms
- Number Theory
- String processing
- Manacher’s Algorithm
- Dynamic Programming with bit masking
- Game Theory
- Computational Geometry
- Reserve a string in C and C++
- Fenwick Tree
- Fast I/O In Java
- Mixed Problems Of DP and Graphs
- HLD Heavy Light decomposition), FFT(Fast Fourier transform) (Optional)
You can also check out the top algorithms known by experts of CodeChef.
Frequently Asked Questions
You can code in any language. It’s completely your choice, but C++ and Java are the most preferred languages. However, it is always suggested to stick to one or two programming languages and websites.
You need to start learning data structures in your preferred language and solve the problems by optimizing your code. Then you can start practicing on different websites.
Competitive coding is not necessary for everyone to practice, but you can get into top companies like Google, Microsoft, Amazon. So if you want to be in top companies, it is always suggested to practice competitive programming.
There is no specific amount of time to get into competitive coding. It all depends on your practice, hard work, and efforts while learning. It completely changes for every individual; it all depends on your thinking capacity and time.
In this article, we briefed on the preparation for Competitive Coding followed by the steps to learn competitive programming. Then we discussed the prerequisites and resources for practicing programming. Finally, at last, we went through the path to practice problems in competitive programming by experts.
Coding is super fun, and like any other skill to build up, this too needs your hard work and perseverance. Never Quit!
It might look hard initially, but believe me, the adrenaline rush you will get when the idea of a problem clicks in mind after struggling for many hours is worth the effort. So push yourself for the preparation for Competitive Coding to be one of the best competitive programmers.
By Dharani Mandla