Roadmap — basic → advanced শেখার ক্রম¶
এই file হলো বড় ছবি: কোন topic আগে, কোনটা পরে, আর কোনটা কীসের উপর দাঁড়িয়ে। "আজ কী করব" জানতে চাইলে STUDY-PLAN.md (সপ্তাহ-ভিত্তিক রুটিন); "আমি কোথায় আছি, এরপর কোথায়" বুঝতে চাইলে এই file।
দুটো roadmap আছে, কারণ এদের কাজ আলাদা:
- STUDY-PLAN.md = সময়ের ম্যাপ (Week 1, Week 2 … ৪ মাসের deadline ধরে)।
- roadmap.md (এই file) = নির্ভরতার ম্যাপ (কোন idea কোন idea-র জন্য দরকার)।
মূল নীতি¶
- ভিত্তি আগে। Array আর hashing শক্ত না হলে graph/DP কিছুই দাঁড়াবে না।
- প্রতিটা topic আগেরটার কাঁধে দাঁড়ায়। নিচের তীরচিহ্ন (→) সেই নির্ভরতা দেখায়।
- Interview-first। ৪ মাসের জন্য কিছু গভীর CP topic ইচ্ছে করে পরে রাখা — নিচে "পরে" বলে চিহ্নিত।
- পড়া ≠ শেখা। প্রতিটা topic-এ অন্তত ৮-১৫টা problem নিজে solve না করলে এগিয়ো না।
নির্ভরতার ম্যাপ (এক নজরে)¶
┌─────────────────────────────────────────────┐
│ 01 Math fundamentals (Level 0-8) │
│ সংখ্যা, mod, bit, prefix sum, two pointer, │
│ binary search, greedy — সব pattern-এর বীজ │
└───────────────┬─────────────────────────────┘
│
┌───────────────────┼───────────────────┐
▼ ▼ ▼
02 Arrays/Strings 05 Hashing 06 Recursion
│ │ & Backtracking
▼ │ │
03 Linked List │ ▼
│ │ 07 Trees
▼ │ │
04 Stack/Queue ──────────┘ ▼
│ 08 Heap / Priority Queue
▼ │
(monotonic stack) ▼
└──────────────────────────────► 09 Graphs ──► 10 DSU
│
▼
12 Dynamic Programming
│
▼
13 Interview Master Problems
│
11 Segment/Fenwick Tree (CP, পরে)
ধাপে ধাপে ক্রম¶
ভিত্তি (এখান থেকে শুরু)¶
- 01 Math fundamentals — Level 0 থেকে 8। সংখ্যা নিয়ে কাজ,
%ও//, prime/GCD, modular arithmetic, bit manipulation, prefix sum, two pointers, sliding window, binary search on answer, greedy — এই শেষ পাঁচটা সরাসরি interview-এর রুটি-রুজি। Level 9-11 (geometry, advanced number theory, hard mixed) interview-এর জন্য পরে। - নির্ভরতা: কিছু না — একদম শুরু।
-
নিজস্ব roadmap: 01-…/roadmap.md (১৫০টা problem-এর পূর্ণ তালিকা)।
-
02 Arrays & Strings। সব কিছুর ভিত্তি data structure। two pointers, sliding window, prefix sum, Kadane।
-
নির্ভরতা: Math Level 5 (prefix), 6 (two pointers), 7 (binary search)।
-
05 Hashing। O(1) lookup-এর জাদু। frequency count, complement (Two Sum), grouping, prefix-sum + hashmap।
- নির্ভরতা: 02।
রৈখিক (linear) data structure ও recursion¶
- 03 Linked List। pointer-এ হাত পাকানো; slow/fast pointer, reversal, merge।
-
নির্ভরতা: 02।
-
04 Stack & Queue। bracket matching, monotonic stack (next greater), monotonic deque (sliding window maximum), BFS frontier।
-
নির্ভরতা: 03; সামনে graph (09)-এ queue লাগবে।
-
06 Recursion & Backtracking। call stack, "leap of faith", subsets, permutations, combinations, N-Queens। DP-র সরাসরি পূর্বসূরি।
- নির্ভরতা: Math Level 3 (counting); সামনে tree (07) ও DP (12)।
অরৈখিক (non-linear) data structure¶
- 07 Trees। traversal (in/pre/post/level order), BST, height/diameter, LCA।
-
নির্ভরতা: 06 (recursion), 04 (level order-এ queue)।
-
08 Heap / Priority Queue। top-K, k-way merge, two heaps (running median)।
-
নির্ভরতা: 07 (tree-আকৃতির ধারণা), Math Level 8 (greedy)।
-
09 Graphs। BFS, DFS, connected components, Dijkstra, topological sort।
-
নির্ভরতা: 04 (queue/stack), 06 (DFS = recursion), 08 (Dijkstra-তে heap)।
-
10 Disjoint Set Union। union-find, cycle detection, Kruskal-এর সাথে সংযোগ।
- নির্ভরতা: 09।
advanced ও interview রূপান্তর¶
-
12 Dynamic Programming। interview-এর #1 ছাঁকনি। state → transition, memo vs tabulation, 1D/grid/knapsack/LIS/LCS/edit distance।
- নির্ভরতা: 06 (recursion), Math Level 4 (bit, bitmask DP-র জন্য), 09 (DP on DAG)।
-
13 Interview Master Problems। ২-৩টা idea মেশানো cross-topic problem; mock format (clarify → brute → optimize → code → test), Amazon/Google/Microsoft-style।
- নির্ভরতা: উপরের প্রায় সব।
CP-গভীর (অফার পাওয়ার পরে)¶
- 11 Segment Tree & Fenwick Tree। update-সহ range query। competitive programming-এ দরকারি, কিন্তু ৪ মাসের interview timeline-এ optional — পরে এসো।
- নির্ভরতা: 02 (array), 06 (recursion), Math Level 4-5।
Interview-critical বনাম পরে-রাখা (৪ মাসের জন্য)¶
| অবশ্যই (core) | পরে রাখো (অফারের পরে) |
|---|---|
| Arrays, strings, hashing | Segment tree / Fenwick (ch 11) |
| two pointers, sliding window | Math Level 9 (geometry) |
| binary search (on answer সহ) | Math Level 10 (advanced number theory) |
| linked list, stack/queue, monotonic stack | Math Level 11 (game theory, Burnside…) |
| recursion, backtracking | SCC, flow, string matching গভীরতা |
| trees, heaps | matrix expo, digit DP, DP optimizations |
| BFS/DFS/Dijkstra/topo sort, DSU | |
| dynamic programming (গভীরভাবে) |
সপ্তাহ পিছিয়ে গেলে আগে bitmask/tree-DP/Dijkstra-র গভীরতা কাটো — কিন্তু কখনো binary search, sliding window, DP-core, বা mock কাটবে না। বিস্তারিত কাট-লিস্ট: STUDY-PLAN.md।
কীভাবে অগ্রগতি মাপবে¶
- প্রতিটা level/topic-এর
problems/README.md-তে tracker আছে — solve করলেplanned→done। - প্রতি মাস শেষে milestone (cumulative solved সংখ্যা) STUDY-PLAN.md-এর Milestones টেবিলে।
- লক্ষ্য সংখ্যা নয়, নির্ভুলতা ও গতি — একটা Medium ৩০-৪০ মিনিটে পরিষ্কার ভেবে, কথা বলতে বলতে solve করতে পারা।