কনটেন্টে যান

NNN — Problem Title

উপরের H1-এ problem-এর number আর নাম বসাও (file-এর নামের সাথে মিল রেখে), যেমন: # 005 — Palindrome Number। তারপর এই হিন্ট লাইনটা মুছে দাও।

Problem link ও উৎস

Attribution-এর জন্য এই block। শুধু official link এখানে রাখো — problem statement কখনো copy কোরো না।

  • Original source: মূল উৎসের নাম (যেমন: Classic exercise / নিজের বানানো / বই-এর নাম)
  • Platform: কোন judge বা site + link (যেমন: LeetCode — https://leetcode.com/problems/...; না থাকলে —)
  • Topic: কোন math topic (যেমন: parity, place value, GCD, modular arithmetic)
  • Difficulty: Easy / Medium / Hard (নিজের ধারণা মতো)
  • Pattern: এক লাইনে pattern-এর নাম (যেমন: digit extraction)
  • Basic idea inherited from: কোন আগের problem/idea থেকে এসেছে (যেমন: 002 — Sum of Digits; একদম নতুন হলে —)

প্রশ্ন ও উদাহরণ

সহজ করে প্রশ্ন

Problem-টা একদম সহজ বাংলায়, নিজের ভাষায় বুঝিয়ে লেখো — যেন একজন বন্ধুকে বোঝাচ্ছ। Original statement copy কোরো না, নিজের মতো করে বলো।

Input ও output

অন্তত একটা concrete input আর তার expected output দেখাও। কোনো edge case থাকলে (যেমন: 0, negative, খুব বড় সংখ্যা) সেটাও আলাদা করে দাও।

চেনা উদাহরণে বোঝা

বাস্তব জীবনের একটা উদাহরণ দিয়ে বোঝাও যাতে intuition তৈরি হয় (যেমন: জোড়ায় জোড়ায় বাঁধা যায় = even, একটা বাকি থাকে = odd)।

ভিত্তির ধারণা

আগের কোন ধারণাটি লাগবে

এই problem কোন আগের বা সহজ idea-র উপর দাঁড়িয়ে আছে? Source block-এর "Basic idea inherited from" এখানে একটু বিস্তারিত বুঝিয়ে বলো।

ভেতরের অঙ্ক

এর পেছনের core math concept-টা কী, এক-দুই লাইনে লেখো (যেমন: parity, place value, GCD, modular arithmetic)।

ধাপে ধাপে সমাধান

প্রথম সরল উপায়

সবচেয়ে সহজ, সরাসরি যে সমাধান প্রথমে মাথায় আসে সেটা লেখো — efficient না হলেও চলবে। আগে "কোনোভাবে হলেও হয়" এই version-টা লিখে ফেলো।

কোথায় বেশি কাজ হতে পারে

ওই brute force কেন ধীর হতে পারে বুঝিয়ে বলো — বড় input-এ কত সময় লাগবে, কোথায় একই কাজ বারবার হচ্ছে, বা কোথায় nested loop লাগছে।

আরও ভালোভাবে ভাবা

কীভাবে আরও ভালো বা দ্রুত করা যায়? মূল insight বা observation-টা লেখো যেটা সমাধানটা সহজ করে দেয়।

ভাবনার পরিবর্তন

ছোট্ট কোন চিন্তার মোচড় brute force থেকে optimal-এ নিয়ে গেল? এক লাইনের সেই "aha" মুহূর্তটা ধরো — এটাই note-এর প্রাণ।

ছবিতে বোঝা

ছবি এঁকে বোঝাও — number line, box, বা table। নিচের fence-এ ASCII diagram আঁকো (নিজের example দিয়ে replace করো)।

উদাহরণ
17  ->  [ 1 ][ 7 ]        (digit গুলো আলাদা box-এ)
sum =     1 + 7  = 8

ছোট input-এ ধাপে ধাপে

একটা ছোট input নিয়ে হাতে হাতে চালাও — প্রতিটা step-এ variable-এর value কীভাবে বদলায় লেখো। নিচের মতো step list বানাও:

  1. শুরুর অবস্থা: কোন variable-এ কী value আছে
  2. Step 1: কী হলো, কোন value বদলালো
  3. Step 2: কী হলো
  4. শেষ অবস্থা: final answer কীভাবে এল

কোড ও ব্যাখ্যা

Python

পরিষ্কার, পড়ার মতো Python code লেখো। Comment কম রাখো, variable name অর্থপূর্ণ রাখো। নিচের fence-এ লেখো:

Python

কোডের প্রতিটি অংশ

Code-এর প্রতিটা গুরুত্বপূর্ণ লাইন বাংলায় বুঝিয়ে বলো — কেন ওই লাইন আছে আর কী করছে।

Output মিলিয়ে দেখা

Section 6-এর example দিয়ে code চালালে step by step কী output আসবে দেখাও — যেন কেউ code না চালিয়েও বুঝতে পারে।

খরচ ও সাধারণ ভুল

সময়

Big-O-তে time complexity লেখো আর এক লাইনে কেন সেটা বুঝিয়ে দাও (যেমন: O(log n) — প্রতি step-এ সংখ্যা 10 দিয়ে ভাগ হচ্ছে)।

অতিরিক্ত জায়গা

কত extra memory লাগছে? O(1)? O(n)? এক লাইনে কারণসহ লেখো।

যে ভুলগুলো এড়াতে হবে

এই ধরনের problem-এ যেসব ভুল প্রায়ই হয় bullet করে লেখো (off-by-one, edge case ভুলে যাওয়া, overflow না ভাবা, ইত্যাদি):

  • এখানে প্রথম common ভুলটা লেখো
  • এখানে দ্বিতীয়টা লেখো

শেখা ও পরের অনুশীলন

এই ধারণার পরের অনুশীলন

এই idea ব্যবহার করে আর কোন কঠিন problem solve করা যায়? নাম + official link দাও (statement copy কোরো না)।

কৌশলটি মনে রাখুন

এই problem থেকে যে reusable pattern শিখলে সেটা এক লাইনে নাম দিয়ে লেখো — পরে একই ধরনের problem-এ দ্রুত মনে পড়বে।

নিজেকে যাচাই করুন

"ভবিষ্যতের আমাকে এক-দুই লাইনে কী বলব" — মূল insight কী, আর কোন signal দেখলে এই pattern মনে পড়বে, সেটা লেখো।


মনে রাখার নিয়ম (legal): সব নিজের ভাষায় লেখো; problem statement copy কোরো না; official link শুধু attribution-এর জন্য রাখো; "asked by Google/Amazon" এমন দাবি কোরো না — বরং "Google-style pattern" / "common interview pattern" লেখো।