How to be a competitive programmer.

How to be a competitive programmer.

ยท

2 min read

Competitive programmers are known for their problem solving skills. They show their skills by making different projects, taking part in different coding challenges and many more.

How do I become a competitive programmer?

- Pick a language.

When picking a programming language ask yourself these questions:

i. What is it that made you interested in programming?

ii. What do you want to do as a programmer?

The answers will navigate your steps and your programming career. And your answers might affect the technical stack that interests you. A front-end developer works on user-facing code, which involves learning JavaScript. A back-end developer works with the server, database, and application which may involve languages like Ruby or Python.

- Learn Data Structures

i. Beginner:

  • Array

  • Linked List

  • Stack

  • Queue

  • Tree

ii. Intermediate

  • Heap

  • Priority Queue

  • Huffman Tree

  • Union Find

  • Tries

  • Hash Table

  • TreeMap

iii. Proficient

  • Segment Tree

  • Binary Indexed Tree

  • Suffix Array

  • Sparse Table

  • LCA

  • Range Tree

iv. Expert

  • Suffix Automation

  • Suffix Tree

  • Heavy-Light Decomposition

  • Treap

  • Splay Tree

  • Dynamic Suffix Array

  • Palindromic Tree

- Algorithms

i. Introduction

  • Computer Algo

  • Big O Notation

  • Recurrence Basics

  • Divide & Conquer

  • Pseudocode Basics

ii. Graphs.

  • Graph

  • Basic Terminology

  • Directed Graphs

  • Representation

  • Depth-first search

  • Weighed Graph

  • Topological sort

  • Connectivity of graph

  • Spanning Tree

iii. Search Algo

  • Linear Search

  • Binary search

  • Jump search

iv. String Algo

  • String basics

  • Searching Tech

  • Hamming Dist

  • Suffix tree

  • String Hashing

  • Rabin-Karp Algo

v. Sorting Algo

  • Insertion sort

  • Merge sort

  • Bubble sort

  • Counting sort

  • Quick sort

  • Selection sort

vi. Dynamic Prog.

  • Basics

  • Edit distance

  • Edit distance Alignment

vii. Hashing

  • Hash table and collisions.

viii. Trees

  • Tree and binary heap.

  • Binary search tree

  • Tree traversals

ix. Linear structure

  • Singly linked list

  • Doubly linked list

  • Fixed-sized array

  • Dynamic array

- Resources

  • YouTube:

i. Neso Academy

ii. Simple Snippets.

iii. Freecodecamp

  • Websites:

i. Geeks for Geeks.

ii. W3schools.

iii. Javatpoint.

- Practice Websites

  • Hackerrank

  • Exercism

  • TopCoder

  • CodeWars

  • CodeChef

  • SPOJ

Just some few tips.

Understand logic properly, build logics, understand the code and flow, write code and paper while practicing and don't copy the code.

Did you find this article valuable?

Support Bode's blog by becoming a sponsor. Any amount is appreciated!