요구사항
- 제일 왼쪽에서 제일 오른쪽으로 가는 최소비용을 구해라
- 출발할 때, 기름은 0이다.
- 시간 제한 2초
- 약 2*10^8 연산 처리 가능
- N^2 일 때 10^4 까지 가능. 100,000
- 여기서 N은 100,000까지 되니 최대 N^2 시간복잡도를 가져야 한다.
- 메모리 제한 512MB
- 512 * 10^6 바이트를 의미.
- 리스트의 크기가 대략 10^7 까지 처리 가능.
설계
- 첫 번째는 무조건 기름을 채워야한다. 따라서 처음은 비싸도 채워야 한다.
- 처음 기름 채우는 값을 min_price 에 저장한다.
- n-1 번 만큼 for문을 돌린다.(간선의 개수)
- 만약에 들어온 값보다 min_price이 클 때, 들어온 값을 min_price에 저장해준다.
- min_price * km[i] 번째를 곱한 결과를 반복해서 저장한다.
구현
N = int(input())
km = list(map(int, input().split()))
cost = list(map(int, input().split()))
min_price = cost[0]
total = 0
for i in range(len(km)):
if min_price > cost[i]:
min_price = cost[i]
total += (min_price * km[i])
print(total)