Introduction:
What is Competitive Programming?
Competitive Programming is an exercise to level up your Programming and Data Structures & Algorithms skills via solving numerous real-world programming problems under certain crucial constraints including time limit, memory constraints, time & space complexity, etc. It is like a programming sport involving many participants competing with each other to achieve better results. A competitive programmer implements their algorithm and submits it to a contest system. Then, the algorithm is tested using a set of test cases, and if it passes all of them, it is accepted.
Who should do CP?
Everyone should try to do CP. It helps enhance one’s mind and develop analytical and thinking skills. It improves problem-solving and programming skills and helps in preparing for technical interviews. Solving competitive programming problems also improves one’s programming and debugging skills.
What are the prerequisites?
There are no prerequisites as such. You can learn the basics of any programming language like syntax, some basic data Structure like Arrays, Strings, and algorithms like Sorting and Math. After that, you can start solving the questions and learn new concepts while solving the questions.
How to start CP?
Start with learning the basics of a programming language. it can be any one. After learning the basics, start practicing problems. For this, you can start with CodeChef or HackerRank as it is the beginner-friendly platform and helps to develop fundamental problem-solving skills easily. Codeforces is the best platform for competitive programming. It organizes short contests very frequently, and the level and quality of questions are also very good. They also have a feature of participating in a contest virtually which means that if you miss the live contest you can still give the contest virtually, the only difference is that in the case of virtual participation there will be no change in the rating.
Importance of Contests
Contests play a crucial role in improving problem-solving skills. Contest prepares you to solve questions in a timed environment, they help to feel the pressure of solving new questions in a given time limit.Try to give each and every live contest and if due to some reason you are not able to give a live contest, participate in a virtual contest. Many online platforms allow you to participate in a contest virtually. Don’t feel demotivated if your ratings drop after the contest. Upsolving after the contest is very important. Try to solve at least one more question.Almost all companies have their online coding test rounds so participating in contests will help you to perform better there.
Websites for Practicing
Here is a list of websites , you can also prefer one of them for practicing.
1.Codeforces- Click here
2.Codechef- Click here
3.AtCoder- Click here
4.Topcoder- Click here
Books , websites and Other resources -
1.CP Algorithm website- Click here
2.Competitive programmer’s Handbook- click here
3.takeUforward Youtube Channel- Click here
4.LUV Youtube Channel- Click here
5.CLRS Book- Click here
6.CSES Problem set- Click here
7.A2OJ Ladder Problem set- Click here