이 문제는 그렇게 어려운 문제는 아니었습니다. 그렇기 때문에 엄청 쉽게 접근했습니다.
문제 풀이 포인트
문제에서 주어지는 2개의 배열 중에서 마지막 주요소의 가격은 어차피 사용을 못합니다. 그래서 그냥 데이터 받고 pop해주었습니다. 어차피 쓸모 없으니까요! 물론 안해줘도 별로 상관없습니다.
제가 푼 문제의 포인트는 다음과 같아요.
i번째
까지의 최소 비용을 찾아야 합니다.i번째
까지의 최소 비용을 알 수 있습니다.O(n)
을 순회하면서 최소 주유 비용을 업데이트 하면서 업데이트가 되지 않으면 원래 최소 비용에서 거리를 곱한 값을 더해줍니다. 업데이트가 되면 이러한 연산과정에서 바뀐 최소 비용으로 더해주면 됩니다.아래는 제가 짠 코드입니다.
import sys
n = int(input())
distance = list(map(int, sys.stdin.readline().split()))
cost = list(map(int, sys.stdin.readline().split()))
cost.pop()
more_small = 1000000001
answer = 0
for d, c in zip(distance, cost):
if more_small > c:
more_small = c
answer += (more_small*d)
else: answer += (more_small*d)
print(answer)