คิดแบบคอมพิวเตอร์ EP2 : ทำงานเร็วขึ้น อาจไม่ต้องทำให้เร็วกว่าเดิม

ทำงานเร็วขึ้น อาจไม่ต้องทำให้เร็วกว่าเดิม
แค่เปลี่ยนวิธี ก็ลดงานไปได้เยอะ

ลองนึกว่าเรามีรายชื่อผู้สมัคร 100 คน แล้วอยากรู้ว่า “มีใครกรอกชื่อซ้ำไหม?”

วิธีแรก หยิบชื่อคนแรกไปเทียบกับอีก 99 ชื่อ จากนั้นหยิบชื่อคนที่สองไปเทียบกับชื่อที่เหลือ ทำแบบนี้จนครบ

ถ้าไม่มีชื่อซ้ำเลย เราต้องเทียบถึง 4,950 คู่

อีกวิธี อ่านรายชื่อทีละคน แล้วเก็บชื่อที่เคยเห็นไว้ในตัวช่วยค้นหา ถ้าชื่อใหม่อยู่ในนั้นแล้ว ก็รู้ทันทีว่าเจอชื่อซ้ำ ถ้ายังไม่มี ก็เพิ่มชื่อนั้นไว้แล้วอ่านคนถัดไป

วิธีนี้อ่านรายชื่อหลักเพียง 100 รอบ แต่ในแต่ละรอบก็ยังมีงานค้นหาและบันทึกอยู่ด้วย จึงต้องใช้ตัวช่วยที่ค้นหาได้เร็ว ไม่ใช่จดลงกระดาษแล้วไล่อ่านใหม่ทั้งแผ่นทุกครั้ง

ความต่างไม่ได้อยู่ที่อ่านหนังสือเร็วขึ้น แต่อยู่ที่เราไม่ต้องกลับไปทำงานแบบเดิมซ้ำ ๆ

การเขียนโปรแกรมก็เหมือนกัน โค้ดสองชุดอาจตอบถูกเหมือนกัน แต่เมื่อข้อมูลมากขึ้น ชุดหนึ่งอาจทำงานหนักกว่าอีกชุดมาก ก่อนรีบหาเครื่องที่แรงขึ้น ลองถามว่า “มีงานส่วนไหนที่เราไม่จำเป็นต้องทำไหม?”

แน่นอนว่ามีสิ่งที่ต้องแลก วิธีจำชื่อเดิมต้องมีพื้นที่เก็บข้อมูลเพิ่ม แต่ช่วยลดงานค้นหาได้ ถ้าเลือกเครื่องมือให้เหมาะ

ใน Python ตัวช่วยแบบนี้เรียกว่า set ใครยังไม่เขียนโปรแกรมก็จำแนวคิดไว้ก่อนได้: เก็บสิ่งที่รู้แล้วให้ค้นเจอง่าย จะได้ไม่ต้องเริ่มใหม่ทุกครั้ง

คุณมีงานอะไรที่ต้องไล่เช็กซ้ำ ๆ อยู่บ้าง? ลองดูว่าเปลี่ยนวิธีแล้วลดงานได้ไหมครับ

ครูโจ๊ก ณัฐพล บัวอุไร
#แนวคิดการแก้ปัญหา #คิดแบบคอมพิวเตอร์ #Algorithm #เขียนโปรแกรม

Related Posts

คิดแบบคอมพิวเตอร์ EP1 : เริ่มจากคิดให้เป็นขั้นตอน

คิดแบบคอมพิวเตอร์ เริ่มจากคิดให้เป็นขั้นตอน เวลาเราบอกเพื่อนว่า “คิดราคารวมให้หน่อย” เพื่อนอาจถามต่อได้ว่าซื้ออะไร กี่ชิ้น แต่เวลาเขียนโปรแกรม เราต้องระบุให้ชัดว่ามีข้อมูลอะไร และต้องทำอะไรกับข้อมูลนั้น ลองคิดตามโจทย์นี้: สมุดเล่มละ 20 บาท ซื้อ 3 เล่ม ต้องจ่ายเท่าไร? เราแยกวิธีทำได้ 3 ขั้น 1. กำหนดข้อมูล: ราคา 20 บาท จำนวน 3…

เขียนโปรแกรมอย่างไรให้เข้าใจอย่างถ่องแท้ : ทำไมต้อง…

“ทำไมต้อง?” ก่อนจะเรียนรู้การเขียนโปรแกรมภาษา C/C++ ให้ไกลไปกว่านี้ ลองย้อนกลับมามองโครงสร้างพื้นฐานที่หลายคนเขียนจนคุ้นมือ #include <iostream> using namespace std; int main() { return 0; } หลายคนจำเพียงว่า “เขียนตามนี้แล้วโปรแกรมจะทำงาน” แต่เคยถามไหมว่า…ทำไมต้องเขียน? ทำไมต้อง #include <iostream> เพราะเรากำลังบอกให้โปรแกรมนำเครื่องมือสำหรับรับและแสดงผลข้อมูล เช่น cin และ cout…

คณิตศาสตร์สำหรับสอบ สอวน.คอมพิวเตอร์ ค่าย 1

ไม่ได้ยากเพราะสูตรเยอะ แต่ยากเพราะ “เลือกใช้ความรู้ให้ถูก” ถ้าพูดถึงการเตรียมตัวสอบ สอวน.คอมพิวเตอร์ ค่าย 1 หลายคนอาจนึกถึง Python, Algorithm หรือการเขียนโปรแกรมเป็นเรื่องแรก ๆ แต่มีอีกส่วนหนึ่งที่ไม่ควรมองข้ามเลย นั่นก็คือ คณิตศาสตร์ และจากที่ผมลองย้อนกลับไปวิเคราะห์ข้อสอบคัดเลือก สอวน.คอมพิวเตอร์ในช่วง 3 ปีล่าสุด ตั้งแต่ พ.ศ. 2567–2569 ผมพบเรื่องหนึ่งที่น่าสนใจมาก ข้อสอบคณิตศาสตร์ไม่ได้เน้นเพียงว่า “จำสูตรได้หรือไม่?” แต่เน้นว่า “เมื่อเจอโจทย์แล้ว…

Python สำหรับสอบ สอวน.คอมพิวเตอร์ ค่าย 1 (วิเคราะห์ข้อสอบ 2567-2569)

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

5 ไอเดียเปลี่ยนโลกด้วยอุปกรณ์ 3 ชิ้น เปลี่ยน Arduino Ultrasonic และ LED ให้เป็นระบบอัตโนมัติสุดล้ำ

5 ไอเดียเปลี่ยนโลกด้วยอุปกรณ์ 3 ชิ้น เปลี่ยน Arduino Ultrasonic และ LED ให้เป็นระบบอัตโนมัติสุดล้ำ … ตัวอย่างการต่อวงจรและโค้ดที่นี่ https://www.tinkercad.com/things/69RaeC3q7xf-ultrasonicled … เคยสงสัยไหมครับว่า “รถยนต์ขับเคลื่อนอัตโนมัติ” หรือ “หุ่นยนต์ทำความสะอาด” มันรู้ได้ยังไงว่าข้างหน้ามีกำแพง? หรือรู้ได้ยังไงว่าต้องหยุดก่อนจะชน? … คำตอบคือพวกมันมี “ดวงตา” ครับ … และวันนี้ เราจะไปดูว่าจะสร้าง…

เรียนรู้ Python สนุกได้ ไม่น่าเบื่อ! กับ Python Coding Game Lab

หลายคนอาจคิดว่าการเรียนรู้การเขียนโปรแกรม โดยเฉพาะภาษา Python นั้นเป็นเรื่องซับซ้อนและน่าเบื่อ ต้องนั่งจ้องหน้าจออ่านโค้ดตัวอักษรสีขาวดำ แต่จะดีแค่ไหนถ้าเราสามารถเรียนรู้ทักษะที่สำคัญนี้ได้ผ่านการเล่นเกมที่สนุกและท้าทาย? วันนี้เราขอแนะนำ “Python Coding Game Lab” แพลตฟอร์มที่จะเปลี่ยนการเรียนรู้ Python ของคุณให้กลายเป็นประสบการณ์ที่น่าตื่นเต้น! Python Coding Game Lab คืออะไร? Python Coding Game Lab คือแพลตฟอร์มการเรียนรู้แบบใหม่ที่ออกแบบมาเพื่อให้ทุกคนเข้าถึงการเขียนโปรแกรม Python ได้อย่างง่ายดายและเพลิดเพลิน ด้วยแนวคิด…

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.