16. สอบทักษะครั้งที่ 2

การสอบทักษะเป็นการวัดความรู้ความเข้าใจและการนำความรู้ในการเขียนคำสั่งภาษา Python ไปประยุกต์ใช้แก้ปัญหา โดยผู้รับการทดสอบจะต้องเขียนคำสั่งภาษา Python เพื่ตอบโจทย์ที่กำหนดให้ 3 - 5 ข้อ โดยจะต้องส่งผลลัพธ์ไปยังเครื่องแม่ข่ายเพื่อรับการประเมินผลโดยอัตโนมัติกับชุดทดสอบที่หลากหลาย

16.1. ตัวอย่างโจทย์ที่ 1

16.1.1. โจทย์ (7-11 Shopy Quiz)

7-11 Shopy Quiz คือ เกมไลฟ์ ถาม-ตอบ คำถามความรู้รอบตัว จำนวน 7 หรือ 11 ข้อ โดยผู้เล่นจะต้องตอบคำถามให้ถูกต้องครบทั้งหมด จำนวน 7 หรือ 11 ข้อ ตามเงื่อนไขในรอบนั้น จึงจะเป็นผู้ชนะ รางวัลเป็น Shopy Coins จำนวน 1 พันล้าน แบ่งเท่ากันทุกคน หากตอบผิดจะหมดสิทธิ์เล่นเกมต่อในข้อถัดไป

จงเขียนโปรแกรมนับจำนวนผู้ชนะ เมื่อครบ 7 หรือ 11 ข้อ ตามที่โจทย์กำหนด

16.1.2. ข้อมูลนำเข้า

มี \(N + 1\) บรรทัด

บรรทัดที่ 1 คือ จำนวนข้อ \((N)\) และจำนวนผู้เล่น \((P)\) โดยที่ \(N\) มีค่าเป็น 7 หรือ 11 เท่านั้น และ \(0 <= P <= 100,000\)

บรรทัดที่ 2 ถึงบรรทัดที่ \(N+1\) คือ จำนวนผู้เล่นที่ตอบผิดในแต่ละข้อ \((X)\) โดยที่ \(0 <= X <= N\)

16.1.3. ข้อมูลส่งออก

มี 1 บรรทัด คือ จำนวนผู้ชนะ

16.1.4. ตัวอย่างผลลัพธ์

7 50

9

10

10

5

5

5

5

1

11 10

1

2

2

2

1

1

1

0

0

0

0

0

7 5000

1600

500

500

100

100

100

100

2000

16.2. ตัวอย่างโจทย์ที่ 2

16.2.1. โจทย์ (ReG611)

จงเขียนโปรแกรมเพื่ออ่านรายการคำร้องถอนและลงทะเบียนของนักศึกษาจากงานทะเบียนของมหาวิทยาลัยแห่งหนึ่ง ซึ่งแต่ละภาคเรียนเจ้าหน้าที่จะบันทึกหนึ่งรายการต่อหนึ่งบรรทัด โดยแต่ละรายการจะประกอบไปด้วย

ประเภทคำร้อง,รหัสนักศึกษาผู้ยื่นเรื่อง,รหัสวิชา

ประเภทของคำร้อง เป็นไปได้ 2 อย่างคือ

  • R แทน การยื่นขอลงทะเบียนรายวิชา

  • W แทน การยื่นขอถอนรายวิชา

รหัสนักศึกษาผู้ยื่นเรื่อง - เป็น ตัวเลข 10 หลักที่ตัวแรกไม่เป็น 0 รหัสวิชา - เป็น ตัวเลข 7 หลักที่ตัวแรกไม่เป็น 0

โปรแกรมจะต้องแสดงรายการของรายวิชาและจำนวนผู้ลงทะเบียนที่อยู่ในรายการทั้งหมด โดยเรียงลำดับจากรายวิชาที่มีจำนวนนักศึกษาลงทะเบียนมากที่สุดไปจนถึงรายวิชาที่มีคนลงทะเบียนน้อยที่สุด

หมายเหตุ:

  • ถ้านักศึกษายื่นคำร้องขอถอนรายวิชาที่ยังไม่มีชื่อให้ถือว่าคำร้องเป็นโมฆะ (ไม่มีผลใดๆ)

  • ถ้านักศึกษายื่นคำร้องขอลงหรือถอนรายวิชาเดิมซ้ำให้ถือว่าเป็นโมฆะ (ไม่มีผลใดๆ)

16.2.2. ข้อมูลนำเข้า

  • ข้อมูลรายการจำนวน n บรรทัด โดยมีรายการละบรรทัด โดยที่ \(1 < n <= 10,000\)

  • บรรทัดสุดท้ายจะมีคำว่า end อยู่

16.2.3. ข้อมูลส่งออก

รายการของรายวิชาพร้อมจำนวนนักศึกษาที่ลงทะเบียนวิชานั้นเรียงลำดับตามจำนวนนักศึกษาที่ลงทะเบียนจากมากไปน้อย โดยแยกรายการละบรรทัด แต่ละบรรทัดประกอบด้วย รหัสวิชา และ จำนวนผู้ลงทะเบียน คั่นด้วย comma ,

16.2.4. ตัวอย่างผลลัพธ์

ข้อมูลนำเข้า

ข้อมูลส่งออก

R,1111111111,1111111

1111111,3

R,2222222222,2222222

2222222,2

R,3333333333,1111111

R,4444444444,2222222

R,5555555555,1111111

end

R,1111111111,1111111

2222222,4

R,2222222222,2222222

1111111,3

R,3333333333,1111111

3333333,2

R,4444444444,2222222

R,4444444444,3333333

R,5555555555,3333333

R,4444444444,3333333

R,3333333333,2222222

R,5555555555,2222222

R,2222222222,1111111

end

R,1111111111,1111111

2222222,4

R,2222222222,2222222

1111111,3

R,3333333333,1111111

3333333,1

R,4444444444,2222222

R,4444444444,3333333

R,5555555555,3333333

W,4444444444,3333333

R,3333333333,2222222

R,5555555555,2222222

R,2222222222,1111111

end