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

โปรแกรมหาเวลารอเฉลี่ยใน Python


สมมติว่าเรามีอาร์เรย์ customers โดย customers[i] เก็บคู่ [arrival_i, time_i] arrival_i คือเวลาที่ลูกค้าคนที่ i มาถึง เวลามาถึงเรียงจากน้อยไปมาก time_i คือเวลาที่ต้องใช้เตรียมออเดอร์ของลูกค้าคนที่ i ตอนนี้ เมื่อลูกค้ามาถึง เขาสั่งออเดอร์ และออเดอร์นั้นเริ่มเตรียมเมื่อเชฟว่าง เชฟไม่เตรียมอาหารให้มากกว่าหนึ่งลูกค้าในเวลาเดียวกัน และเตรียมตามลำดับที่สั่ง เราต้องหาเวลารอเฉลี่ยของลูกค้าทั้งหมด

เช่น ถ้าอินพุตคือ customers = [[7,2],[8,4],[10,3],[20,1]] ผลลัพธ์จะเป็น 3.5 เพราะ:

  • ลูกค้าคนแรกมาเวลา 7 เชฟรับออเดอร์เริ่มทันทีเวลา 7 เสร็จเวลา 9 เวลารอ = 9 - 7 = 2
  • ลูกค้าคนที่สองมาเวลา 8 เชฟเริ่มเวลา 9 เสร็จเวลา 13 เวลารอ = 13 - 8 = 5
  • ลูกค้าคนที่สามมาเวลา 10 เชฟเริ่มเวลา 13 เสร็จเวลา 16 เวลารอ = 16 - 10 = 6
  • ลูกค้าคนที่สี่มาเวลา 20 เชฟเริ่มทันทีเวลา 20 เสร็จเวลา 21 เวลารอ = 21 - 20 = 1
  • เวลารอเฉลี่ย = (2 + 5 + 6 + 1) / 4 = 3.5

วิธีแก้ปัญหา

  • arr := รายการใหม่
  • time := 0
  • สำหรับแต่ละคู่ (i, j) ใน customers:
    • ถ้า i > time: time := i + j
    • มิฉะนั้น: time := time + j
  • แทรก (time-i) ลงท้าย arr
  • return (ค่าเฉลี่ยของทุก item ใน arr)

ตัวอย่าง

def solve(customers):
    arr = []
    time = 0
    for i, j in customers:
        if i > time:
            time = i + j
        else:
            time += j
        arr.append(time - i)
    return sum(arr) / len(arr)

customers = [[7,2],[8,4],[10,3],[20,1]]
print(solve(customers))

อินพุต

[[7,2],[8,4],[10,3],[20,1]]

เอาต์พุต

3