Even Better Solution
เฮียโกงนิดนะ คือ เฮียใช้ set() เฮียรู้ว่ายังไม่ได้สอน ในตัวอย่างนี้ เฮียอยากจะแสดงให้เห็นว่า ในการเขียนโปรแกรม เรามีหลายวิธีมากๆเลยในการแก้โจทย์ ยิ่งเรารู้จักภาษาดีเท่าไหร่ เราก็ยิ่งมีเครื่องมือดีดีเท่านั้นในการแก้ปัญหา
แต่เหนือสิ่งอื่นใด โปรแกรมเมอร์ควรรู้จักสงสัยและตั้งโจทย์ให้กับตนเองครับ การเรียนรู้ถึงจะเกิดขึ้นได้เอง
set() เนี่ยเป็น function ที่แปลง value (ในที่นี้ คือ list) ให้กลายเป็น value ที่มี type set เจ้าตัว set เนี่ยมีความหมายเหมือนในวิชาเลขครับ super set, sub set, union, intersection อะไรพวกนั่นครับ ถ้าไม่คุ้นให้ อ่านที่นี่ครับ การเปลี่ยน list ให้เป็น set มีข้อดีคือ เฮียสามารถใช้ set intersection ได้ คือ หาสมาชิกตัวที่อยู่ในทั้งสอง set
โจทย์ในข้อนี้ จริงๆแล้วมันเป็นการหา intersection ของสอง set น่ะครับ ดูบรรทัด6 เฮียหา intersection โดยใช้ and นะครับ (union คือ or) แล้วเฮียก็แปลงผล intersection ให้กลายเป็น list เพื่อ return