Road Map to competitive programming
Most of you must have already heard about competitive programming. According to a writer on Quora, Competitive programming is solving well-defined problems by writing computer programs under specified limits.
What it teaches you? It is a field where every coder showcases their problem-solving skills under various constraints that forces them to think creatively and efficiently. You will learn to opt for the best possible approach by analyzing the problem in space and time. More than anything else, it requires patience.
Practice makes a man perfect. Without practice, you won’t be able to learn the art of thinking.
Where to start? With so many resources online, confusion is natural. Here is the list of some of the popular sites to eliminate the confusion.
- Choose a programming language (C, C++, or Python, any language)
- Understand Time and Space Complexity (there is always more than one solution to a problem, try to come up with the best one)
- Learn Data Structure and Algorithm (DSA) by heart. Learn when, where, and how to apply the concepts
- SPOJ has a problem archive for all beginners. Build your confidence by solving a few problems with maximum submissions, later start solving problems topic-wise. Try to solve your doubts using Google or the help of an expert.
- CODECHEF Do participate in the contests organized by Codechef every month specially Lunchtime. Take reference from the tutorials and then start coding. This will help you to learn a lot. Look at the top graded codes for better implementation.
- CODEFORCES This site is for intermediate coders. They host 10 short contests of 2–3 hours duration.
- TOPCODER Use this website once you can write code fast and have a proper experience.
Get your hands dirty in the coding. Keep practicing, practicing, and practicing.
Some of the topics that you should master-
- BITS
- Bits manipulation
- Bit Twiddling
- Binary Search
- Left Binary Search
- Right Binary Search
- Arrays and Searching using Binary Search
- Graphs
- BFS (Breadth-First Search)/ Transversal BFS
- DFS (Depth-First Search)/ Transversal DFS
- Greedy algorithms
- It is one of the most intuitive algorithms
- They are generally used in optimization problems
- Dynamic Programming
- Try to solve all the problems available in this document
Programming is all about patience. Keep trying every day, every week till you start getting the right approach, don’t quit. You will improve day by day, just keep your growth consistent.
Happy learning!