Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

ทำให้ตัวเลข 3 ตัวเป็นศูนย์ใน Python

สมมติว่าเรามีตัวเลข 3 ตัว ภารกิจคือนับจำนวนขั้นตอนที่เหมาะสมที่สุด (Optimal Steps) เพื่อทำให้ตัวเลขทั้ง 3 ตัวกลายเป็น '0'

ตัวอย่าง Input-1:

a = 4
b = 4
c = 6

Output:

7

คำอธิบาย:

จำนวนขั้นตอนที่เหมาะสมที่สุดเพื่อทำให้ตัวเลขทั้งหมดเป็น '0' คือ:

(4, 4, 6)
Removing '1' from 1st and 2nd number = (3, 3, 6)
Removing '1' from 1st and 3rd number = (2, 3, 5)
Removing '1' from 1st and 3rd number = (1, 3, 4)
Removing '1' from 1st and 3rd number = (0, 3, 3)
Removing '1' from 2nd and 3rd number = (0, 2, 2)
Removing '1' from 2nd and 3rd number = (0, 1, 1)
Removing '1' from 2nd and 3rd number = (0, 0, 0)
ดังนั้น จำนวนขั้นตอนทั้งหมดคือ '7'

แนวทางแก้ปัญหา

เพื่อแก้ปัญหานี้ เราจะลบ '1' จากตัวเลข 2 ตัวใดๆ ที่ผลรวมของ 2 ตัวนั้นมากกว่าตัวสุดท้าย เพื่อหาขั้นตอนขั้นต่ำ เราจะคำนวณจำนวนขั้นตอนขั้นต่ำ

  • รับตัวเลข 3 ตัวเป็น Input

  • เรียงลำดับตัวเลขจากน้อยไปมากโดยใช้ sort

  • ตรวจสอบว่าผลรวมของ 2 ตัวน้อยกว่าตัวที่ 3 ไหม ถ้าใช่ คืนค่าผลรวม

  • เนื่องจากแต่ละครั้งเราลบ '1' จาก 2 ตัว จะใช้ (n1+n2+n3)/2 ขั้นตอนเพื่อทำให้ทั้งหมดเป็น '0'

ตัวอย่าง

def maxScore(a: int, b: int, c: int):
    a, b, c = sorted((a, b, c))
    if a + b < c:
        return a + b
    return (a + b + c) // 2

a = 4
b = 4
c = 6
print(maxScore(a, b, c))

การรันโค้ดข้างต้นจะได้ผลลัพธ์:

ผลลัพธ์

7

สำหรับ Input a=4, b=4, c=6 จะใช้ 7 ขั้นตอนทำให้เป็นศูนย์ทั้งหมด โปรแกรมจึงคืนค่า 7