# DSA শেখা, ধাপে ধাপে

ছোট উদাহরণ, স্পষ্ট ছবি আর নিজের হাতে code লিখে Data Structures ও Algorithms শিখুন। ব্যাখ্যা বাংলায়; technical term ও code English-এ।

<div class="start-links" markdown="1">

[পড়ার পরিকল্পনা <small>আজ কোন বিষয় পড়বেন</small>](STUDY-PLAN.md)

[অধ্যায়ের roadmap <small>কোনটির পরে কোনটি শিখবেন</small>](roadmap.md)

[বই ও অনুশীলনের উৎস <small>বিষয় অনুযায়ী reference</small>](00-books-and-learning-sources/README.md)

</div>

বাঁ পাশের **sidebar**-এ অধ্যায় ও পড়ার ক্রম সাজানো আছে। ফোনে ওপরের menu খুললে একই তালিকা পাবেন।
প্রতিটি অধ্যায়ের অনুশীলন তালিকায় **বাংলা সমাধানের নোট** ও **official problem** আলাদা link হিসেবে দেওয়া আছে।
ওপরের search-এ বাংলা বা English topic লিখে খুঁজতে পারেন। প্রতিটি পৃষ্ঠার শুরুতে সেই নোটের `.md` download আছে।

## একটি বিষয় শেখার চার ধাপ

| ধাপ | কী করবেন | কখন পরের ধাপে যাবেন |
| --- | --- | --- |
| ১. ধারণা | অধ্যায়ের পরিচয় ও ব্যবহার পড়ুন | কোন সমস্যার জন্য structure-টি দরকার বলতে পারলে |
| ২. ছবি | ছোট input নিয়ে প্রতিটি state নিজে আঁকুন | পরের ধাপে কোন মান বা pointer বদলাবে অনুমান করতে পারলে |
| ৩. অনুশীলন | তালিকা থেকে প্রথম problem খুলে নিজে চেষ্টা করুন | example ও edge case দিয়ে code যাচাই করলে |
| ৪. পুনরাবৃত্তি | নোট বন্ধ করে আবার ব্যাখ্যা ও code লিখুন | কোথায় এই কৌশল ব্যবহার করবেন বলতে পারলে |

Graph-এর তীর সম্পর্ক বা চলার দিক বোঝায়; code-এর পাশে দেওয়া table প্রতিটি ধাপের মান দেখায়।
বড় diagram ও table ফোনে পাশে scroll করা যায়। শুধু final output মেলালেই শেষ নয়—কেন কাজ করে সেটিও বলুন।

---

## কোথা থেকে শুরু

একদম নতুন বা rusty হলে এখান থেকে:

1. [Math fundamentals — Level 0: Absolute Basics](01-math-based-programming-fundamentals/00-absolute-basics/README.md)
2. প্রথম সম্পূর্ণ lesson: [001 — Even or Odd](01-math-based-programming-fundamentals/00-absolute-basics/problems/001-even-or-odd.md) → [002 — Sum of Digits](01-math-based-programming-fundamentals/00-absolute-basics/problems/002-sum-of-digits.md) → [003 — Count Digits](01-math-based-programming-fundamentals/00-absolute-basics/problems/003-count-digits.md)

---

## সব chapter (basic → advanced)

| # | Chapter | কী শিখবে | Interview-গুরুত্ব |
| --- | --- | --- | --- |
| 01 | [Math fundamentals](01-math-based-programming-fundamentals/README.md) | ১৫০ problem-এ math-based programming (১২ level) | Level 0–8 জরুরি |
| 02 | [Arrays & Strings](02-arrays-and-strings/README.md) | two pointers, sliding window, prefix sum | ⭐ সবচেয়ে জরুরি |
| 03 | [Linked List](03-linked-list/README.md) | slow/fast pointer, reversal | ⭐ জরুরি |
| 04 | [Stack & Queue](04-stack-and-queue/README.md) | monotonic stack/deque | ⭐ জরুরি |
| 05 | [Hashing](05-hashing/README.md) | frequency, complement (Two Sum) | ⭐ সবচেয়ে জরুরি |
| 06 | [Recursion & Backtracking](06-recursion-and-backtracking/README.md) | subsets, permutations, N-Queens | ⭐ জরুরি |
| 07 | [Trees](07-trees/README.md) | traversal, BST, LCA, diameter | ⭐ জরুরি |
| 08 | [Heap / Priority Queue](08-heap-priority-queue/README.md) | top-K, two heaps | ⭐ জরুরি |
| 09 | [Graphs](09-graphs/README.md) | BFS, DFS, Dijkstra, topo sort | ⭐ জরুরি |
| 10 | [Disjoint Set Union](10-disjoint-set-union/README.md) | union-find, cycle, MST | মাঝারি |
| 11 | [Segment & Fenwick Tree](11-segment-tree-and-fenwick-tree/README.md) | range query, point update | CP-বেশি, পরে |
| 12 | [Dynamic Programming](12-dynamic-programming/README.md) | state, transition, memo/tabulation | ⭐⭐ #1 filter |
| 13 | [Interview Master Problems](13-interview-master-problems/README.md) | cross-topic, mock format | ⭐ শেষ ধাপ |

সহায়ক: [note লেখার templates](templates/math-problem-note-template.md) · [কীভাবে contribute করবে](contribution-guide.md) · [এই site কীভাবে চালাবে](HOW-TO-RUN-THE-SITE.md)।

---

## রোজ কীভাবে পড়বে (2–3 ঘণ্টা)

1. **~40 min theory** — একটা topic-এর `concept` + `visual-explanation`।
2. **~80–110 min solving** — আগে নিজে চেষ্টা (২০–৩০ min), তারপর note মেলাও।
3. আটকে গেলে ৩০–৩৫ min পর note/editorial → আবার scratch থেকে লেখো → revision list।
4. রবিবার = সপ্তাহের ২–৩টা ভুল-করা problem আবার solve।
5. নিজের অগ্রগতি আলাদা করে লিখে রাখুন: চেষ্টা করেছি → সমাধান করেছি → সাহায্য ছাড়া আবার পেরেছি। নোট লেখা আছে মানেই আপনি problem solve করেছেন, এমন নয়।

শুরু করুন [পড়ার পরিকল্পনা](STUDY-PLAN.md) থেকে। সময়ের চেয়ে বোঝার মানকে গুরুত্ব দিন; দরকার হলে একই topic-এ আরও একদিন অনুশীলন করুন।
