Computer >> 컴퓨터 >  >> 프로그램 작성 >> Python

Python에서 평균 대기 시간을 찾는 프로그램

<시간/>

고객[i] =[arrival_i, time_i] 쌍을 보유하는 배열 고객이 있다고 가정합니다. 여기서 arrival_i는 i번째 고객의 도착 시간입니다. 그리고 도착 시간은 낮은 것에서 높은 것으로 정렬됩니다. 그리고 time_i는 i번째 고객의 주문을 준비하는 데 필요한 시간입니다. 이제 고객이 도착하면 주문을 하고 요리사가 한가할 때 주문한 사람만 준비를 시작합니다. 요리사는 한 번에 한 명 이상의 고객을 위해 음식을 준비하지 않습니다. 그리고 명령을 받은 순서대로 준비합니다. 모든 고객의 평균 대기 시간을 찾아야 합니다.

따라서 입력이 고객 =[[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 :=새 목록
  • 시간 :=0
  • 고객의 각 쌍(i, j)에 대해 다음을 수행합니다.
    • 만약 내가> 시간이면
      • 시간 :=i + j
    • 그렇지 않으면
      • 시간 :=시간 + j
  • arr 끝에 (time-i) 삽입
  • return(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