ทำงานเร็วขึ้น อาจไม่ต้องทำให้เร็วกว่าเดิม
แค่เปลี่ยนวิธี ก็ลดงานไปได้เยอะ
ลองนึกว่าเรามีรายชื่อผู้สมัคร 100 คน แล้วอยากรู้ว่า “มีใครกรอกชื่อซ้ำไหม?”
วิธีแรก หยิบชื่อคนแรกไปเทียบกับอีก 99 ชื่อ จากนั้นหยิบชื่อคนที่สองไปเทียบกับชื่อที่เหลือ ทำแบบนี้จนครบ
ถ้าไม่มีชื่อซ้ำเลย เราต้องเทียบถึง 4,950 คู่
อีกวิธี อ่านรายชื่อทีละคน แล้วเก็บชื่อที่เคยเห็นไว้ในตัวช่วยค้นหา ถ้าชื่อใหม่อยู่ในนั้นแล้ว ก็รู้ทันทีว่าเจอชื่อซ้ำ ถ้ายังไม่มี ก็เพิ่มชื่อนั้นไว้แล้วอ่านคนถัดไป
วิธีนี้อ่านรายชื่อหลักเพียง 100 รอบ แต่ในแต่ละรอบก็ยังมีงานค้นหาและบันทึกอยู่ด้วย จึงต้องใช้ตัวช่วยที่ค้นหาได้เร็ว ไม่ใช่จดลงกระดาษแล้วไล่อ่านใหม่ทั้งแผ่นทุกครั้ง
ความต่างไม่ได้อยู่ที่อ่านหนังสือเร็วขึ้น แต่อยู่ที่เราไม่ต้องกลับไปทำงานแบบเดิมซ้ำ ๆ
การเขียนโปรแกรมก็เหมือนกัน โค้ดสองชุดอาจตอบถูกเหมือนกัน แต่เมื่อข้อมูลมากขึ้น ชุดหนึ่งอาจทำงานหนักกว่าอีกชุดมาก ก่อนรีบหาเครื่องที่แรงขึ้น ลองถามว่า “มีงานส่วนไหนที่เราไม่จำเป็นต้องทำไหม?”
แน่นอนว่ามีสิ่งที่ต้องแลก วิธีจำชื่อเดิมต้องมีพื้นที่เก็บข้อมูลเพิ่ม แต่ช่วยลดงานค้นหาได้ ถ้าเลือกเครื่องมือให้เหมาะ
ใน Python ตัวช่วยแบบนี้เรียกว่า set ใครยังไม่เขียนโปรแกรมก็จำแนวคิดไว้ก่อนได้: เก็บสิ่งที่รู้แล้วให้ค้นเจอง่าย จะได้ไม่ต้องเริ่มใหม่ทุกครั้ง
คุณมีงานอะไรที่ต้องไล่เช็กซ้ำ ๆ อยู่บ้าง? ลองดูว่าเปลี่ยนวิธีแล้วลดงานได้ไหมครับ
ครูโจ๊ก ณัฐพล บัวอุไร
#แนวคิดการแก้ปัญหา #คิดแบบคอมพิวเตอร์ #Algorithm #เขียนโปรแกรม

