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