Updated: 16/11/2022
นี้เป็นวิชาที่มีลักษณะเป็น Competitve Programming คือเป็นการเขียนโปรแกรมเพื่อแก้ไขปัญหาทางตรรกะหรือคณิตศาสตร์ ภายในข้อจำกัดและคำตอบที่ชัดเจน
โจทย์แต่ละข้อจะจำกัดเวลาและพื้นที่ที่ใช้ได้ดังนั้นต่อให้เขียนได้คำตอบที่ถูกแต่ใช้เวลาหรือพื้นที่มากเกินไปก็อาจจะทำห้ไม่ผ่านได้
เพื่อที่จะแก้ปัญหาให้ผ่าน เราจำเป็นจะต้องมี Algorithm ที่มีเวลาการทำงานที่น้อยพอ (ส่วนใหญ่จะต้องน้อยกว่า Polynomial Time) เพื่อที่เมื่อ Testcase มีขนาดใหญ่ขึ้นโปรแกรมของเราจะยังทำงานได้อย่างรวดเร็วอยู่ โดยวิชานี้จะเรียนคู่กับวิชา Algorithm Design & Analysis โดยเราจะนำความรู้ มาใช้แก้ปัญหาในวิชานี้ได้
เป็นวิชาที่สนุกดีสำหรับคนที่ชอบแก้โจทย์ท้าทาย แต่ก็เป็นวิชาที่ผลาญเวลาและเจ็บปวดกับคนที่ไม่ถนัด
-
Repository นี้มีไว้เพื่อให้ลองฝึกโจทย์ หรือแอบดูวิธีทำเพื่อเป็นแนวคิดในการเขียนโปรแกรมของตัวเองเท่านั้น เนื่องจากวิชานี้มี ระบบตรวจลอกอัตโนมัติ MOSS ซึ่งมีการตรวจย้อยหลังไปถึงพี่ปีก่อนๆ ด้วย ดังนั้นต่อให้ลอกไปโปรแกรมก็จะจับได้แล้วให้กลับมาแก้เหมือนเดิม
-
เนื่องจากวิชานี้มีจำนวนโจทย์ที่เยอะมาก (รวมทั้งหมดก็เกือบ 100+ ข้อ) และจะยากขึ้นเรื่อยๆ ตามเนื้อหาในวิชา Algorithm ทำให้คนที่ไม่ถนัดในวิชานี้อาจจะทำไม่ทัน ใช้เวลาทำนาน (บางข้ออาจจะทำเป็นวัน) หรือทำไม่ได้ซึ่งก็จะขอให้คำแนะนำตามนี้
-
วิชานี้จะเก็บคะแนนส่วนใหญ่อยู่ที่โจทย์ 100+ ข้อนี่แหละ โดยข้อส่วนใหญ่หากทำถูกจะได้ข้อละ 1 คะแนน (สำหรับบางข้อ 2 คะแนน แต่จะมีความยากมากกว่า) แต่คะแนนจะเก็บเต็มที่ประมาณ 60 คะแนน ดังนั้นไม่จำเป็นจะต้องทำได้ทุกข้อ พยายามเลือกทำข้อง่ายแค่ให้เท่ากับคะแนนเก็บก็ได้ (ข้อง่ายสามารถสังเกตได้โดยชื่อโจทย์จะมีระดับระบุไว้เป็น Bronze, Silver, Gold โดยทุกระดับจะมี 1 คะแนนเท่ากัน) (สำหรับข้อที่ทำเกินอาจจะกลายเป็น Bonus คะแนนช่วยเราก็ได้)
-
วิชานี้มีการสอบทั้ง Midterm และ Final โดยจะมี ~3 ข้อเป็นข้อง่าย/ปานกลาง/ยาก ก็พยายามทำเท่าที่ได้
-
พยายามอย่าทุ่มเวลาทั้งหมดไปกับวิชานี้ เพราะวิชาอื่นก็มีความยากเหมือนกัน ถ้าทุ่มเวลาหมดกับวิชานี้ (ซึ่งเป็น 1 หน่วยกิต) ก็อาจจะทบทวนวิชาอื่นไม่ทันได้ แล้วก็หาเวลาพักผ่อนด้วย
Coming Soon...
เป็นล้าน