akg과 은 bkg이 전달되어야 합니다.i번 도시에는 금 g[i]kg, 은 s[i]kg, 그리고 트럭 한대가 있습니다.t[i] 시간이 걸리고, 최대 w[i]kg 광물을 운반할 수 있습니다.정수 a,b와 정수 배열 g,s,w,t가 매개변수로 주어집니다. 주어진 정보를 바탕으로 각 도시의 트럭을 최적으로 운행했을 때, 새로운 도시를 건설하기 위해 금 akg과 은 bkg을 전달할 수 있는 가장 빠른 시간을 구해 return 하도록 solution 함수를 완성해주세요.
def solution(a, b, g, s, w, t):
start, end = 0, int(4e15)
answer = end
while start <= end:
mid = (start + end) // 2
# 움직인 gold, silver 개수
gold, silver = 0, 0
total = 0 # 전체 개수
for i, time in enumerate(t):
# 광물을 옮기는 횟수
move = (mid - time) // (time * 2) + 1
if move * w[i] > g[i]:
gold += g[i]
else:
gold += move * w[i]
if move * w[i] > s[i]:
silver += s[i]
else:
silver += move * w[i]
if s[i] + g[i] < move * w[i]:
total += s[i] + g[i]
else:
total += move * w[i]
if gold >= a and silver >= b and total >= a+b:
end = mid - 1
answer = min(answer, mid)
else:
start = mid + 1
return answer