How to start Competitive Programming

Junho KimJunho Kim
5 min read

What is competitive programming ?

Competitive programming is a mind sport or a type of programming competition where participants solve algorithmic problems within a fixed time frame. It involves the use of programming languages and problem-solving skills to devise efficient and correct solutions to complex computational problems. These competitions can take place online or in-person, and they often attract participants from around the world.

In competitive programming, participants are presented with a series of problems of varying difficulty levels. They are required to write code to solve these problems and submit their solutions within a specific time limit. The problems can cover various domains, such as algorithms, data structures, mathematics, graph theory, and more.

Why it matters ?

Obviously, it is related to your job interview! (Almost) all famour tech companies such as Meta, Apple, Microsoft, Amazon, and Google use similar approach to assess their candidates whether they are able to do a code within reasonabl timeframe like 30 minutes. Yes! this is similar with what competitive programming uses. In essense, if you are good at competitive programming, then you are highly possible to pass your coding interview during job interview. Now, you are motivated to learn and practice this ?

How can I start ?

To get started with competitive programming, here are some steps you can follow:

  1. Learn a Programming Language: Choose a programming language that you are comfortable with or interested in learning. Popular languages for competitive programming include C++, Java, and Python. Familiarize yourself with the syntax, data structures, and standard libraries of your chosen language.

  2. Understand Data Structures and Algorithms: Gain a solid understanding of fundamental data structures like arrays, linked lists, stacks, queues, trees, and graphs. Learn common algorithms such as sorting, searching, dynamic programming, graph algorithms (BFS, DFS), and greedy algorithms. This knowledge will be crucial for solving problems efficiently.

  3. Practice Problem Solving: Solve programming problems regularly to improve your problem-solving skills. Start with simpler problems and gradually tackle more challenging ones. Online platforms like Codeforces, Topcoder, and LeetCode offer a wide range of practice problems and contests to participate in.

  4. Study Existing Solutions: After solving a problem, study the editorial or solutions submitted by others. This will help you understand alternative approaches, optimize your code, and learn new techniques. Reading other people's code and explanations can provide valuable insights.

  5. Participate in Contests: Engage in online coding competitions to put your skills to the test. Join coding communities, participate in weekly or monthly contests, and compete against others. This will help you practice under time pressure and improve your ability to solve problems efficiently.

  6. Learn from Others: Engage with the competitive programming community. Join forums, discussion boards, or social media groups focused on competitive programming. Interact with experienced programmers, ask questions, and seek guidance. Learning from others' experiences and sharing knowledge will accelerate your progress.

  7. Analyze and Optimize: After solving a problem or participating in a contest, analyze your solutions and look for areas where you can optimize them. Focus on reducing time complexity, improving memory usage, and optimizing algorithms. Developing efficient code is a crucial aspect of competitive programming.

  8. Be Persistent and Consistent: Competitive programming is a skill that requires practice and persistence. Set aside dedicated time for regular practice, solve problems consistently, and track your progress. Over time, you will become more proficient in problem solving and algorithmic thinking.

Remember, competitive programming is not just about winning contests but also about continuous learning and improvement. Enjoy the process, be patient, and embrace the challenges along the way.

What contents I can participate ?

There are numerous online platforms, such as Codeforces, Topcoder, and AtCoder, that host competitive programming contests and provide practice problems for participants to sharpen their skills. Many universities and organizations also organize coding competitions and participate in international events like the International Collegiate Programming Contest (ICPC) and Google Code Jam.

Hey Hey, I am beginner. Where should I start ?

As a beginner in competitive programming, there are several platforms that can provide you with a solid foundation and help you progress. Here are some popular platforms that are beginner-friendly:

  1. LeetCode: LeetCode offers a vast collection of coding problems categorized by difficulty level. It covers a wide range of topics and allows you to practice solving algorithmic problems. LeetCode also provides solutions and explanations for each problem, making it a great resource for beginners.

  2. HackerRank: HackerRank offers coding challenges and contests in various domains, including algorithms, data structures, and mathematics. It provides a supportive community and allows you to compare your solutions with others. HackerRank also offers tutorials and learning paths to help beginners get started.

  3. Codeforces: Codeforces is a competitive programming platform that hosts regular contests and offers a problem archive for practice. While some contests on Codeforces are more challenging, it still provides an excellent learning opportunity for beginners. You can participate in the "Div. 2" contests, which are specifically designed for beginners and have easier problem sets.

  4. AtCoder: AtCoder is a Japanese competitive programming platform that hosts contests and provides a wide range of practice problems. It offers a beginner-friendly contest called "AtCoder Beginner Contest (ABC)" and provides editorial solutions after the contests. AtCoder's problem archive is also well-organized by topics and difficulty levels.

  5. Topcoder: Topcoder is one of the oldest competitive programming platforms. It offers coding challenges and contests across different domains, including algorithms and data structures. Topcoder has a vast community and provides learning resources, tutorials, and editorial solutions to help beginners understand and improve their skills.

  6. Project Euler: Project Euler focuses on mathematical and algorithmic problems. It provides a collection of challenging problems that require creative thinking and problem-solving skills. Project Euler is a great platform to enhance your mathematical and programming abilities.

In my opinion, LeetCode and HackerRank are the best place you can explore. They are widely used from various people who have various competencies. They have quite enough population and your will learn from them as well.

Remember, the key is to start with easier problems and gradually progress to more challenging ones as you build your skills and confidence. Don't hesitate to refer to editorial solutions, tutorials, and community forums to understand different approaches and learn from others. Practice regularly and enjoy the journey of learning and improving your competitive programming skills.

0
Subscribe to my newsletter

Read articles from Junho Kim directly inside your inbox. Subscribe to the newsletter, and don't miss out.

Written by

Junho Kim
Junho Kim