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

Python에서 메모를 교환할 수 있는 최소 시간 찾기


n명의 출납원이 돈을 교환하고 있다고 가정하면, 현재 i번째 출납원의 앞에는 ki명의 사람들이 있습니다. 이제, i 번째 계산원에 대한 라인의 j 번째 사람은 m[i,j] 메모를 가지고 있었습니다. 우리는 자신의 메모를 얼마나 일찍 교환할 수 있는지 찾아야 합니다. 계산원이 하나의 메모를 스캔하는 데 5초가 걸렸다는 것을 기억해야 합니다. 고객을 위해 모든 메모의 스캔을 완료한 후 직원은 메모를 교환하는 데 15초가 걸렸습니다.

따라서 입력이 입력과 같으면 n =6, k =[12, 12, 12, 12, 12, 12]

7 8 9 7 9 6 10 9 9 6 7 8
10 7 10 9 8 9 9 9 9 6 5 6
9 8 8 9 8 6 7 9 10 6 6 7
7 6 9 6 6 9 8 9 6 6 8 9
9 8 7 6 5 10 8 10 7 6 6 8
8 7 6 5 7 9 7 9 6 5 5 7

그러면 계산원이 각 고객의 모든 메모를 스캔하는 데 5초가 필요하므로 출력은 585이므로 5*m[I,j]를 추가합니다. 이제 각 계산원은 모든 고객에 대해 15초가 걸리므로 답에 15*k[]를 추가합니다. 각 출납원의 소요 시간을 계산한 후 소요되는 최소 시간이 답이 됩니다. 따라서 출납원 m[5]은 최소 585시간이 걸립니다.

이 문제를 해결하기 위해 다음 단계를 따릅니다. −

  • n :=k의 크기

  • 최소 :=99999

  • 0에서 n 사이의 i에 대해 수행

    • 온도 :=k[i] * 15

    • 0에서 k[i] 범위의 j에 대해 수행

      • 온도 :=온도 + m[i, j] * 5

    • temp <최소이면

      • 최소 :=온도

  • 최소 반환

예시

이해를 돕기 위해 다음 구현을 살펴보겠습니다. −

def minTimeToExchange(k, m):
   n = len(k)
   minimum = 99999
   for i in range(n):
      temp = k[i] * 15
   for j in range(k[i]):
      temp += m[i][j] * 5
   if temp < minimum:
      minimum = temp
   return minimum

k = [12, 12, 12, 12, 12, 12]
m = [
   [7,8,9,7,9,6,10,9,9,6,7,8],
   [10,7,10,9,8,9,9,9,9,6,5,6],
   [9,8,8,9,8,6,7,9,10,6,6,7],
   [7,6,9,6,6,9,8,9,6,6,8,9],
   [9,8,7,6,5,10,8,10,7,6,6,8],
   [8,7,6,5,7,9,7,9,6,5,5,7]]
print(minTimeToExchange(k, m))

입력

[12, 12, 12, 12, 12, 12],
[[7,8,9,7,9,6,10,9,9,6,7,8],
[10,7,10,9,8,9,9,9,9,6,5,6],
[9,8,8,9,8,6,7,9,10,6,6,7],
[7,6,9,6,6,9,8,9,6,6,8,9],
[9,8,7,6,5,10,8,10,7,6,6,8],
[8,7,6,5,7,9,7,9,6,5,5,7]]

출력

585