이러한 문제를 풀 때 규칙이 있다.
매번 인덱스를 확인할 때마다 최적의 결과값인지, (문제에 따르면) 최소의 비용인지 확인하면 된다.
2 3 1 4 : 거리
3 5 2 7 5 : 비용
(1) 2 3
처음이니 2 x 3
(2) 3 5
이전 비용 3 x 3
현재 비용 3 x 5
-> 지금까지 보면 3 x 3 < 3 x 5 이므로, 이전 비용을 유지한다.
(3) 1 2
이전 비용 1 x 3
현재 비용 1 x 2
-> 지금까지 보면 1 x 3 > 1 x 2 이므로, 현재 비용으로 업데이트한다.
(4) 4 7
이전 비용 4 x 2
현재 비용 4 x 7
-> 지금까지 보면 4 x 2 < 4 x 7 이므로, 이전 비용을 유지한다.
결과 : 6 + 9 + 2 + 8 = 25
import sys
read = sys.stdin.readline
n = int(read())
length = list(map(int, read().split()))
price = list(map(int, read().split()))
length = length + [0]
city = []
for x, y in zip(length, price):
city.append([x, y])
del city[len(city) - 1]
answer = city[0][0] * city[0][1]
minidx = 0
for i in range(1, len(city)):
if city[minidx][1] * city[i][0] > city[i][0] * city[i][1]:
minidx = i
answer += city[i][0] * city[i][1]
else:
answer += city[minidx][1] * city[i][0]
print(answer)