Skip to main content

Intro

c++-problem-solving สามารถดู video ของหัวข้อนี้ก่อนได้ ดู video

ขั้นแรกสุดก่อนจะไปต่อ เราต้องเคยชินกับภาษา C++ กันก่อน ทั้งในแง่ของการเขียนเพื่อแก้ปัญหาและองค์ประกอบหลักของ C++ ด้วย เพื่อให้ Session ต่อไป เราเข้าใจ C++ ได้ลึกซึ้งมากขึ้น

ในหัวข้อนี้เราจะมาเรียนรู้วิธีฝึกฝนการเขียน Program ผ่าน Problem Solving ใน Leetcode กัน

มารู้จักกับ Problem solving

Problem Solving คือ กระบวนการหรือขั้นตอนในการระบุปัญหาหรือความต้องการที่เฉพาะเจาะจง และค้นหาวิธีการหรือเทคนิคในการแก้ไขหรือตอบสนองต่อปัญหาหรือความต้องการนั้นโดยใช้ภาษาการเขียนโปรแกรม

เป้าหมายหลักคือการสร้างโปรแกรมหรือระบบที่สามารถทำงานได้ตามที่ต้องการ โดยกระบวนการก็จะมีประมาณนี้

  1. Problem Identification ขั้นแรกคือการเข้าใจและระบุปัญหาอย่างชัดเจน รวมถึงการกำหนดขอบเขตของปัญหา
  2. Problem Analysis ขั้นตอนนี้เกี่ยวข้องกับการแยกแยะและวิเคราะห์ปัญหาออกเป็นส่วนย่อยๆ เพื่อทำความเข้าใจลึกซึ้งยิ่งขึ้น
  3. Solution Design ขั้นตอนนี้คือการวางแผนและออกแบบ Solution โดยใช้เทคนิค Algorithm ต่างๆ
  4. Coding นำแผนการและออกแบบที่ได้มาเขียนเป็น code โปรแกรมโดยใช้ภาษาการเขียนโปรแกรมที่เหมาะสม (ซึ่งใน Course นี้เราก็จะใช้ C++ แน่นอน)
  5. Testing ทดสอบโปรแกรมเพื่อตรวจสอบว่าทำงานตามที่ต้องการหรือไม่ และค้นหาข้อผิดพลาดเพื่อแก้ไข

แนะนำ Leetcode

Ref: https://leetcode.com/

LeetCode เป็น platform ออนไลน์ที่เป็นที่รู้จักกันดีในหมู่ developer และผู้ที่สนใจเรื่องการเขียนโปรแกรม เพราะเป็นแหล่งที่รวบรวมโจทย์การเขียน code หลากหลายระดับความยาก ตั้งแต่ระดับพื้นฐานไปจนถึงระดับสูง โดยมีวัตถุประสงค์เพื่อช่วยให้ผู้ใช้สามารถฝึกฝนและพัฒนาทักษะการเขียนโปรแกรมของตนเองได้

บน LeetCode ผู้ใช้สามารถเลือกโจทย์ที่ต้องการทำได้จากหมวดหมู่ต่างๆ ตามประเภทของปัญหา เช่น algorithm, data structure, คณิตศาสตร์, และอื่นๆ แต่ละโจทย์จะมีการระบุระดับความยาก และมีการให้คะแนนตามความสำเร็จในการแก้ไขปัญหา ผู้ใช้สามารถเขียน code ตอบโจทย์โดยใช้ภาษาการเขียนโปรแกรมที่ต้องการ และสามารถทดสอบ code ของตนเองกับข้อมูลทดสอบที่ระบบจัดเตรียมไว้ เพื่อดูว่า code นั้นสามารถแก้ไขปัญหาได้ถูกต้องและมีประสิทธิภาพหรือไม่

นอกจากนี้ LeetCode ยังมี community ของ developer ที่สามารถแลกเปลี่ยนความคิดเห็น แชร์วิธีการแก้ปัญหา และให้คำแนะนำกับกันและกันได้อีกด้วย

ดังนั้น LeetCode จึงตอบโจทย์การฝึกฝน Problem Solving ด้วยเช่นเดียวกัน โดย LeetCode ให้โอกาสในการฝึกฝนการแก้ปัญหาผ่านโจทย์การเขียน code ที่หลากหลาย ซึ่งเป็นการเตรียมตัวที่ดีสำหรับสถานการณ์จริงในการทำงานและการสัมภาษณ์งาน

intro-01.webp

ตลอดทั้ง Course นี้หลายๆโจทย์เราจะยึดมาจาก leetcode เนื่องจาก

  1. Leetcode มีตัวตรวจคำตอบของ Problem Solving อยู่ในตัวอยู่แล้ว ดังนั้นผู้เรียนสามารถเขียนโปรแกรมและส่งโปรแกรมได้เองผ่าน Leetcode
  2. Leetcode โจทย์ที่ผมจะหยิบมา “ทุกโจทย์” จะเป็นโจทย์ที่มีเขียน Solution กำกับไว้แล้วใน Leetcode เช่นกัน ดังนั้น หากฟังผมแล้วงง สามารถศึกษาจาก Solution อื่นๆเพิ่มเติมจากใน Leetcode ได้

ขอให้คำแนะนำหนึ่งอย่าง (ที่อยากให้ปฏิบัติตามอย่างเคร่งครัด หากอยากพัฒนา skill ด้านนี้ไปด้วยกัน) ให้ pause ก่อนตอนที่ฟังโจทย์เสร็จ และลองทำดูก่อนที่จะฟัง Solution ที่อยู่ในคลิป เพื่อเป็นการฝึกทักษะ Problem Solving และเกลาทักษะนี้ของตัวเองไปพร้อมๆกัน (ในทุกคลิปต่อจากนี้ หากมีจังหวะไหนที่กำลังจะเริ่มโจทย์ ผมจะมีจังหวะให้ Pause ก่อนเพื่อให้ผู้เรียนสามารถเขียน program ไปพร้อมๆกันได้)