เริ่มแก้โจทย์ DSA ด้วย C++: รับโจทย์ แยกขั้นตอน และทดสอบคำตอบ
ตอนแรกของคอร์ส C++ DSA วางพื้นเรื่องการเรียนภาษาและการคิดแก้ปัญหา ก่อนรีบใช้โครงสร้างข้อมูล ควรฝึกแปลงโจทย์ให้เป็นข้อมูลนำเข้า ขั้นตอนคำนวณ และผลลัพธ์ที่ต้องส่งออกก่อน
ขั้นตอนคิดก่อนเขียนโค้ด
- อ่านโจทย์: ข้อมูลเข้าและผลลัพธ์คืออะไร มีข้อจำกัดของจำนวนข้อมูลหรือไม่
- ลองตัวอย่างเล็ก: คำนวณด้วยมือเพื่อเห็นรูปแบบและกรณีขอบ
- เขียนวิธีทำเป็นภาษาคน: ระบุลำดับการแปลงข้อมูลให้ชัด
- เขียนโค้ด: แยกตัวแปรและฟังก์ชันตามหน้าที่
- ทดสอบ: ลองกรณีปกติ ค่าต่ำสุด ค่าสูงสุด และข้อมูลที่อาจทำให้คำตอบผิด
ตัวอย่าง: หาผลรวมของจำนวนเต็ม n ตัว
#include <iostream>
int main() {
int n;
std::cin >> n;
long long total = 0;
for (int i = 0; i < n; ++i) {
long long value;
std::cin >> value;
total += value;
}
std::cout << total << '\n';
return 0;
}
ลูปอ่านข้อมูลทีละตัวแล้วบวกเข้าตัวแปรสะสม การเลือก long long ช่วยรองรับผลรวมที่ใหญ่กว่า int ในหลายกรณี แต่ยังต้องตรวจข้อจำกัดจากโจทย์จริงเสมอ โปรแกรมนี้ใช้หน่วยความจำคงที่และทำงานหนึ่งรอบต่อข้อมูลหนึ่งค่า
แบบฝึกหัด
ปรับโปรแกรมให้หาค่าสูงสุดของจำนวน n ตัว แล้วทดสอบกรณีที่มีข้อมูลหนึ่งค่า ตัวเลขติดลบทั้งหมด และค่าซ้ำกัน ก่อนส่งคำตอบให้อธิบายว่าเริ่มต้นตัวแปรค่าสูงสุดจากค่าใดและเพราะอะไร
บทความนี้เป็นบทเรียนฝึกพื้นฐาน ไม่ได้แทนหลักสูตร DSA ทั้งหมด หัวข้อต่อไปควรค่อย ๆ เพิ่ม array/vector, การค้นหา, sorting และการวิเคราะห์เวลาเมื่อมีโจทย์รองรับ
แหล่งอ้างอิง
แหล่งที่มา: วิดีโอต้นทาง