কনটেন্টে যান

Roadmap — basic → advanced শেখার ক্রম

এই file হলো বড় ছবি: কোন topic আগে, কোনটা পরে, আর কোনটা কীসের উপর দাঁড়িয়ে। "আজ কী করব" জানতে চাইলে STUDY-PLAN.md (সপ্তাহ-ভিত্তিক রুটিন); "আমি কোথায় আছি, এরপর কোথায়" বুঝতে চাইলে এই file।

দুটো roadmap আছে, কারণ এদের কাজ আলাদা:

  • STUDY-PLAN.md = সময়ের ম্যাপ (Week 1, Week 2 … ৪ মাসের deadline ধরে)।
  • roadmap.md (এই file) = নির্ভরতার ম্যাপ (কোন idea কোন idea-র জন্য দরকার)।

মূল নীতি

  1. ভিত্তি আগে। Array আর hashing শক্ত না হলে graph/DP কিছুই দাঁড়াবে না।
  2. প্রতিটা topic আগেরটার কাঁধে দাঁড়ায়। নিচের তীরচিহ্ন (→) সেই নির্ভরতা দেখায়।
  3. Interview-first। ৪ মাসের জন্য কিছু গভীর CP topic ইচ্ছে করে পরে রাখা — নিচে "পরে" বলে চিহ্নিত।
  4. পড়া ≠ শেখা। একটি ছোট problem নিজে solve করে যুক্তি বুঝিয়ে বলো; দুর্বল জায়গায় আরও অনুশীলন করো।

পড়ার পথ (এক নজরে)

flowchart TD
    basics["১ · Python, loop, index, complexity"] --> arrays["২ · Array ও string"]
    arrays --> linear["৩–৫ · Linked list, stack, queue, hashing"]
    linear --> recursion["৬ · Recursion ও backtracking"]
    recursion --> treeheap["৭–৮ · Tree ও heap"]
    treeheap --> graphs["৯–১০ · Graph ও DSU"]
    recursion --> dp["১২ · Dynamic programming"]
    graphs --> mixed["১৩ · মিশ্র problem ও mock"]
    dp --> mixed
    mixed -. "প্রয়োজন হলে" .-> ranges["১১ · Segment ও Fenwick tree"]

তীর প্রস্তাবিত পড়ার ক্রম দেখায়; প্রতিটি অধ্যায়ের সুনির্দিষ্ট prerequisite নিচে আছে। এটি বাধ্যতামূলক একটিমাত্র পথ নয়। যেমন, সাধারণ 1D DP শেখার আগে পুরো graph অধ্যায় শেষ করতে হয় না; DP on DAG-এর জন্য graph দরকার। প্রথম array lesson-এর আগে advanced math শেষ করারও প্রয়োজন নেই।


ধাপে ধাপে ক্রম

ভিত্তি (এখান থেকে শুরু)

  1. 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-এর জন্য পরে।
  2. নির্ভরতা: কিছু না — একদম শুরু।
  3. নিজস্ব roadmap: 01-…/roadmap.md (১৫০টা problem-এর পূর্ণ তালিকা)।

  4. 02 Arrays & Strings। সব কিছুর ভিত্তি data structure। two pointers, sliding window, prefix sum, Kadane।

  5. নির্ভরতা: Math Level 5 (prefix), 6 (two pointers), 7 (binary search)।

  6. 05 Hashing। গড়ে O(1) lookup। frequency count, complement (Two Sum), grouping, prefix-sum + hashmap।

  7. নির্ভরতা: 02।

রৈখিক (linear) data structure ও recursion

  1. 03 Linked List। pointer-এ হাত পাকানো; slow/fast pointer, reversal, merge।
  2. নির্ভরতা: 02।

  3. 04 Stack & Queue। bracket matching, monotonic stack (next greater), monotonic deque (sliding window maximum), BFS frontier।

  4. নির্ভরতা: 02-এর list ও index; linked list দিয়ে implementation বুঝতে 03 কাজে লাগবে। সামনে graph (09)-এ queue লাগবে।

  5. 06 Recursion & Backtracking। call stack, "leap of faith", subsets, permutations, combinations, N-Queens। DP-র সরাসরি পূর্বসূরি।

  6. নির্ভরতা: Math Level 3 (counting); সামনে tree (07) ও DP (12)।

অরৈখিক (non-linear) data structure

  1. 07 Trees। traversal (in/pre/post/level order), BST, height/diameter, LCA।
  2. নির্ভরতা: 06 (recursion), 04 (level order-এ queue)।

  3. 08 Heap / Priority Queue। top-K, k-way merge, two heaps (running median)।

  4. নির্ভরতা: 07 (tree-আকৃতির ধারণা), Math Level 8 (greedy)।

  5. 09 Graphs। BFS, DFS, connected components, Dijkstra, topological sort।

  6. নির্ভরতা: 04 (queue/stack), 06 (DFS = recursion), 08 (Dijkstra-তে heap)।

  7. 10 Disjoint Set Union। union-find, cycle detection, Kruskal-এর সাথে সংযোগ।

    • নির্ভরতা: 09।

advanced ও interview রূপান্তর

  1. 12 Dynamic Programming। পুনরাবৃত্ত subproblem চেনার কৌশল। state → transition, memo vs tabulation, 1D/grid/knapsack/LIS/LCS/edit distance।

    • নির্ভরতা: 06 (recursion), Math Level 4 (bit, bitmask DP-র জন্য), 09 (DP on DAG)।
  2. 13 Interview Master Problems। ২-৩টা idea মেশানো cross-topic problem; mock format (clarify → brute → optimize → code → test), Amazon/Google/Microsoft-style।

    • নির্ভরতা: উপরের প্রায় সব।

CP-গভীর (অফার পাওয়ার পরে)

  1. 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 করতে পারা।