# ১৭ সপ্তাহের পড়ার পরিকল্পনা — ধারণা থেকে নিজে সমাধান

দিনে প্রায় ২–৩ ঘণ্টা ধরে পরিকল্পনাটি সাজানো। **Week 1 মানে আপনি যেদিন শুরু করবেন সেই সপ্তাহ**; এটি কোনো নির্দিষ্ট ক্যালেন্ডারের deadline নয়। আগে শেখা বিষয় ছোট একটি problem দিয়ে যাচাই করে এগিয়ে যান। সময় বেশি লাগলে সপ্তাহটি আবার করুন।

[অধ্যায়ের সম্পর্ক](roadmap.md) · [১০০টি বাছাই অনুশীলন](GOOGLE-READY-100.md) · [বই ও উৎস](00-books-and-learning-sources/README.md)

## প্রতিদিনের কাজ

1. **৩০–৪০ মিনিট ধারণা ও ছবি:** ছোট input নিন। প্রতিটি ধাপের array, pointer, stack বা DP table খাতায় লিখুন।
2. **৬০–৯০ মিনিট problem:** আগে নিজে চেষ্টা করুন। ২৫–৩০ মিনিট আটকে থাকলে intuition দেখুন, তারপর নোট বন্ধ করে code লিখুন।
3. **২০–৩০ মিনিট যাচাই:** খালি input, একটি item, duplicate ও boundary case চেষ্টা করুন। কোন শর্তে algorithm কাজ করে লিখুন।
4. **শেষ ১০ মিনিট:** ভুলটি ও পরের revision-এর দিন লিখুন। সপ্তাহের একদিন পুরোনো ২–৩টি problem আবার করুন।

নিচে **বিষয়** থেকে chapter, **বাংলা নোট** থেকে worked solution, আর **Official problem** থেকে judge খুলবে। এটি প্রতি সপ্তাহের শুরু করার problem; আরও অনুশীলন সংশ্লিষ্ট অধ্যায়ের তালিকায় আছে।

## সপ্তাহভিত্তিক পথ

| সপ্তাহ | বিষয় | প্রথম বাংলা নোট | Official problem | সপ্তাহ শেষে নিজেকে জিজ্ঞেস করুন |
| --- | --- | --- | --- | --- |
| ১ | [Python basics](01-math-based-programming-fundamentals/00-absolute-basics/README.md), [array](02-arrays-and-strings/README.md) | [Reverse String](02-arrays-and-strings/problems/001-reverse-string.md) | [LeetCode 344](https://leetcode.com/problems/reverse-string/) | Index ও value আলাদা করতে পারি? |
| ২ | [Binary search](01-math-based-programming-fundamentals/07-binary-search-on-answer/README.md) ও two pointers | [Basic Binary Search](01-math-based-programming-fundamentals/07-binary-search-on-answer/problems/091-basic-binary-search.md) | [LeetCode 704](https://leetcode.com/problems/binary-search/) | কোন অর্ধেক বাদ দিচ্ছি, কেন? |
| ৩ | [Hashing](05-hashing/README.md), prefix sum ও window | [Two Sum](02-arrays-and-strings/problems/002-two-sum.md) | [LeetCode 1](https://leetcode.com/problems/two-sum/) | আগের কোন তথ্য রাখলে আবার খুঁজতে হয় না? |
| ৪ | [Linked list](03-linked-list/README.md), [stack ও queue](04-stack-and-queue/README.md) | [Reverse Linked List](13-interview-master-problems/problems/004-reverse-linked-list-both-ways.md) | [LeetCode 206](https://leetcode.com/problems/reverse-linked-list/) | Pointer বদলানোর আগে পরের node রেখেছি? |
| ৫ | [Heap](08-heap-priority-queue/README.md) ও monotonic stack | [Daily Temperatures](13-interview-master-problems/problems/014-daily-temperatures.md) | [LeetCode 739](https://leetcode.com/problems/daily-temperatures/) | বাদ দেওয়া item আর লাগবে না কেন? |
| ৬ | [Recursion ও backtracking](06-recursion-and-backtracking/README.md) | [Subsets](06-recursion-and-backtracking/problems/007-subsets.md) | [LeetCode 78](https://leetcode.com/problems/subsets/) | ফিরে এসে state আগের অবস্থায় আনছি? |
| ৭ | [Tree traversal ও BST](07-trees/README.md) | [Validate BST](13-interview-master-problems/problems/019-validate-bst.md) | [LeetCode 98](https://leetcode.com/problems/validate-binary-search-tree/) | সব ancestor-এর সীমা মানছি? |
| ৮ | [Tree-র অনুশীলন](07-trees/problems/README.md) | [Lowest Common Ancestor](13-interview-master-problems/problems/020-lowest-common-ancestor.md) | [LeetCode 236](https://leetcode.com/problems/lowest-common-ancestor-of-a-binary-tree/) | Subtree থেকে কী ফেরত চাই? |
| ৯ | [BFS ও DFS](09-graphs/README.md) | [Number of Islands](13-interview-master-problems/problems/008-number-of-islands.md) | [LeetCode 200](https://leetcode.com/problems/number-of-islands/) | কখন visited করছি? একই cell দুবার গুনছি? |
| ১০ | [Topological sort](09-graphs/topological-sort.md), [DSU](10-disjoint-set-union/README.md), [shortest path](09-graphs/shortest-path.md) | [Course Schedule](13-interview-master-problems/problems/010-course-schedule.md) | [LeetCode 207](https://leetcode.com/problems/course-schedule/) | Dependency-তে cycle থাকলে কী হবে? |
| ১১ | [DP state ও transition](12-dynamic-programming/README.md) | [Coin Change](12-dynamic-programming/problems/010-coin-change-min.md) | [LeetCode 322](https://leetcode.com/problems/coin-change/) | dp[i] এক বাক্যে কী বোঝায়? |
| ১২ | [DP-র কৌশল](12-dynamic-programming/patterns.md) | [Longest Common Subsequence](12-dynamic-programming/problems/017-longest-common-subsequence.md) | [LeetCode 1143](https://leetcode.com/problems/longest-common-subsequence/) | ছোট state আগে হিসাব করা হয়েছে? |
| ১৩ | [Subset ও partition](12-dynamic-programming/problems/README.md) | [Partition Equal Subset Sum](12-dynamic-programming/problems/013-partition-equal-subset-sum.md) | [LeetCode 416](https://leetcode.com/problems/partition-equal-subset-sum/) | একই item দুবার ব্যবহার করছি? |
| ১৪ | [মিশ্র problem](13-interview-master-problems/README.md) | [Merge Intervals](13-interview-master-problems/problems/011-merge-intervals.md) | [LeetCode 56](https://leetcode.com/problems/merge-intervals/) | Sort করার পরে কোন invariant থাকে? |
| ১৫ | [Data structure বাছাই](13-interview-master-problems/problems/README.md) | [LRU Cache](13-interview-master-problems/problems/021-lru-cache.md) | [LeetCode 146](https://leetcode.com/problems/lru-cache/) | Lookup ও order—দুটোর জন্য কী রাখব? |
| ১৬ | [Window ও graph revision](GOOGLE-READY-100.md) | [Minimum Window Substring](13-interview-master-problems/problems/023-minimum-window-substring.md) | [LeetCode 76](https://leetcode.com/problems/minimum-window-substring/) | Window ছোট করলে কখন শর্ত ভাঙে? |
| ১৭ | [Mock ও শেষ revision](13-interview-master-problems/README.md) | [Merge K Sorted Lists](13-interview-master-problems/problems/024-merge-k-sorted-lists.md) | [LeetCode 23](https://leetcode.com/problems/merge-k-sorted-lists/) | যুক্তি, code ও test বোঝাতে পারি? |

## অন্য platform-এ চর্চা

| ধারণা | বাংলা নোট | Official problem |
| --- | --- | --- |
| Prefix sum | [Static Range Sum](02-arrays-and-strings/problems/009-static-range-sum.md) | [CSES 1646](https://cses.fi/problemset/task/1646/) |
| Parity | [Watermelon](02-arrays-and-strings/problems/008-watermelon.md) | [Codeforces 4A](https://codeforces.com/problemset/problem/4/A) |
| 1D DP | [Dice Combinations](12-dynamic-programming/problems/004-dice-combinations.md) | [CSES 1633](https://cses.fi/problemset/task/1633/) |
| DAG-এ DP | [Longest Path](12-dynamic-programming/problems/023-longest-path-dag.md) | [AtCoder DP G](https://atcoder.jp/contests/dp/tasks/dp_g) |

## অগ্রগতি মাপুন

| অবস্থা | মানে |
| --- | --- |
| পড়েছি | নোট অনুসরণ করে বুঝেছি |
| চেষ্টা করেছি | নিজে code লিখেছি, কোথায় আটকে গেছি জানি |
| সমাধান করেছি | Sample ও নিজের edge case পাস করেছে |
| আবার পেরেছি | কয়েক দিন পরে নোট ছাড়া যুক্তি ও code লিখেছি |

Problem-এর সংখ্যা সহায়ক; আসল মাপকাঠি হলো নতুন input-এ যুক্তি ঠিক থাকে কি না। প্রতি চার সপ্তাহে একটি পুরোনো ও একটি নতুন problem সময় ধরে করুন। দুর্বল pattern-এর জন্য পরের সপ্তাহে সময় রাখুন। Mock-এ এই ক্রম বলুন: শর্ত পরিষ্কার করা → সহজ সমাধান → খরচ → উন্নতি → code → test।

## সময় কম হলে

আগে array, hashing, binary search, window, traversal, মূল DP ও revision করুন। [Segment/Fenwick tree](11-segment-tree-and-fenwick-tree/README.md), advanced number theory, geometry ও গভীর competitive programming পরে রাখা যায়। [বাইরের বড় topic map](00-source-roadmaps/README.md) প্রয়োজনমতো reference হিসেবে ব্যবহার করুন।

প্রস্তুতির গতি আপনার পূর্বজ্ঞান, নিয়মিত অনুশীলন ও ভুল সংশোধনের উপর নির্ভর করবে।
